如何在pyobjc中停止一个线程

时间:2015-12-02 08:16:37

标签: python objective-c multithreading 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...

如果有人能指出我正确的方向并帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用与Objective-C相同的方式执行此操作。

一般情况下,您需要显式启动一个新线程来跟踪线程对象,然后使用线程的cancel方法让线程停止并最终向“testThread”添加常规检查,以检查线程是否被取消。

据我所知,除了杀死POSIX级别的pthread之外,NSThread没有办法强制取消线程。后一个选项会导致内存管理问题(也可能会锁定),因为被杀死的线程无法自行清理。

另见: