2015-12-02 88 views
0

我的問題在於:如何阻止我的線程在pyobjc中運行?如何停止pyobjc中的線程

下面是問題的描述:

我有兩個按鈕,開始和停止。我必須爲啓動按鈕創建一個線程,以便在程序啓動時,它不會凍結UI。但我也需要一個停止按鈕來中斷當前正在運行的線程。

下面是代碼:

@objc.IBAction 

    def start_(self,sender): 
     NSThread.detachNewThreadSelector_toTarget_withObject_(self.testThread, self, 1) 

    def stop_(self,sender): 
     ???????? 

    def testThread(self): 
     #doing something... 

我將不勝感激,如果有人可以點我在正確的方向,並幫助我。

+0

嘗試goggling爲:_nsthread開始stop_,你會發現在計算器上至少一個可能的答案。繼續吧,去做吧。 – barny

+0

是啊,我嘗試了谷歌搜索。並不給我任何答案。我試圖找出它是如何工作在pyobjc。 – Nogynordz

回答

0

您可以在Objective-C中以相同的方式執行此操作。

一般來說,你需要明確地啓動一個新的線程來跟蹤線程對象,然後使用線程的cancel方法來讓線程停止,最後將常規檢查添加到「testThread」中,檢查線程是否被取消。

據我所知,NSThread沒有辦法強制取消除殺死POSIX級pthread之外的線程。後一個選項會導致內存管理問題(也可能是鎖定問題),因爲殺死的線程本身無法清理。

參見: