經過一個多月,終於發布了秋式廣告殺手新版本V2.5了,由於基本上問題很少,所以更新周期就長一些。
這里談一點這次改動涉及到的內容和知識點:
1: 去掉了最初依賴的Hosts模式,所以對Hosts的增刪改代碼都去除了。
2: 百度競價廣告的屏蔽,除了原有的百度搜索,增加百度知識頁面的廣告屏蔽。
3: 增加了一台服務器,提供默認一劍出牆的服務。
4: 針對默認代理功能,經過層層思考,允許軟件在不同目錄下的時候可以開多個,以監聽不同的端口,變成一款多端口代理軟件。
下面分享幾個升級中,被我記住的知識點:
1:線程的try catch的必要性:
先說下線程異常的危害性:
1:winform程序:線程異常,若未try,會導致軟件自動退出。
2:webform程序:線程異常,若未try,會導致應用程序池重啟,類似網站重啟。
總結:
2: 軟件只能啟動單個實例的知識點:
有時候,我們只允許軟件啟動一個實例,所以我們通常會有這么段通用代碼檢測:
}
}
}
需要有點變化:這次的升級, 需要變成了在不同的目錄允許多開,所以,按邏輯,我寫下了這么段代碼:
}
這里又涉及到兩個知識點:
1:調試期的問題:
在調試的時候,默認有個.vshost宿主,導致調試后運行的軟件名稱為:秋式廣告殺手.vshost.exe
我要測試多個不同目錄的軟件運行,所以在其它目錄也運行了軟件,問題來了:
調試的進程“秋式廣告殺手.vshost.exe”和直接運行的“秋式廣告殺手.exe”,是對不上號的。
解決方法:
這時候,只要把:項目-右鍵屬性-調試-啟用VS宿主進程的勾去掉就可以了。
2:想當然的錯誤:
以為Process.GetCurrentProcess()獲取出來的當前進程對象,總會和獲取進程列表里的同個進程對象一樣,所以才有了cp==pro這樣的對象比較判斷。
實際的錯誤:
用Process.GetCurrentProcess出來的對象,和循環進程的每一個pro對象都是不等的,所以直接的判斷是錯誤。
網上這樣相當然的錯誤代碼有點多:
一開始,我也網上搜了搜,發現好多和我寫的相當然的代碼一樣,網上也有這種用=號判斷出錯誤示例代碼,大伙要注意下。
解決方法:
經過本人細心的發現,對於進程,其進程ID是一樣的,於是把判斷的語句改成:
cp.Id!=pro.Id
通過進程ID來判斷是否同一進程。
好了,本節,基本就分享這兩個相對被我記住的知識小點。
軟件升級:軟件重啟運行,系統會自動升級。
軟件下載地址:http://www.cyqdata.com/download/article-detail-54271
另外,那10關挑戰題,到現在還沒被完全破關,繼續大伙繼續給力:開發者基礎知識游戲,共10關,歡迎挑戰