2013-06-04 64 views
0

我從部署爲windows服務的單個exe創建了兩個服務。每個服務都對應一個dll(類庫項目)。當我停止服務時,dll不會卸載並且與此dll對應的代碼繼續運行。我有一個定期運行的輪詢器,即使在服務關閉時也會繼續輪詢。如何在服務停止時卸載相應的dll?來自單個exe的多個服務

回答

0

卸載DLL不是做網點的網絡方式。你應該重寫服務類的onStop()方法。設置一些標誌,表示相應的dll不會回答民意調查。你可以殺死輪詢線程,或者更好地使用信號量來阻塞線程直到開始/恢復。

如果你顯示一些代碼,那麼我們可以進一步幫助。猜測,

是否有一個觸發輪詢過程的計時器?然後停止/處置該計時器。在服務的OnStart()中創建一個新的定時器。另一種方法是檢查定時器回調中的標誌。

是否有一個無限的while循環輪詢(一次又一次)?如果有一個,那麼更好的重構代碼來使用計時器。無論如何,你可以在循環的主體中插入一個標誌,並在標誌設置時繼續循環。

相關問題