在我的應用程序中,我在後臺運行服務器。我正在使用NSOperation
這樣做。 (我用GCD之前,但我需要能夠阻止它,所以我切換到NSOperation
,但我仍然無法弄清楚如何)強制停止NSOperation或GCD?
所以基本上,我NSOperation
子類看起來是這樣的:
- (void)main {
server_main(var1, var2);
}
由於這是一個服務器,server_main
函數基本上不返回。我也無法控制該功能的實施。
偶爾,用戶會更改服務器的設置。發生這種情況時,我想停止然後重新啓動服務器。如果我理解正確,我需要在NSOperation
子類中執行類似if (self.isCancelled)
的操作,但由於它會卡在server_main
函數中,所以我懷疑它實際上會起作用。
那麼我該如何停止服務器?
非常感謝!
是的,我想......我知道這一點,但問題是我不能修改'server_main'出於某種原因。否則,我會完全做到這一點。 – aforaudrey 2013-05-01 13:07:17
@iBlue - 對不起。這是一個阻力,但'server_main'實際上需要提供這兩種技術之一才能被取消。 (感嘆。)'server_main'是你可以用允許取消的東西來替換的東西嗎? (例如,某些框架可以作爲庫添加,或者可以將其源代碼編譯爲項目的一部分;如果您有源代碼,則可以編輯它)或者您堅持使用它? – Rob 2013-05-01 13:17:10
是的,可悲的是我堅持它,因爲它是...「<雖然感謝。 – aforaudrey 2013-05-01 17:41:41