Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pyobjc中停止线程_Python_Objective C_Multithreading_Pyobjc - Fatal编程技术网

Python 如何在pyobjc中停止线程

Python 如何在pyobjc中停止线程,python,objective-c,multithreading,pyobjc,Python,Objective C,Multithreading,Pyobjc,我的问题是:如何阻止线程在pyobjc中运行 以下是问题的描述: 我有两个按钮,开始和停止。我必须为“开始”按钮创建一个线程,这样当程序启动时,它就不会冻结UI。但是我还需要一个停止按钮来中断当前正在运行的线程 代码如下: @objc.IBAction def start_(self,sender): NSThread.detachNewThreadSelector_toTarget_withObject_(self.testThread, self, 1)

我的问题是:如何阻止线程在
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...

如果有人能给我指出正确的方向并帮我解决问题,我将不胜感激。

你可以用Objective-C中的相同方法来完成

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

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

另见:


试试看:nsthread start stop,你会发现至少有一个关于StackOverflow的可能答案。去吧,去做。是的,我在谷歌上搜索过。没有给我任何答案。我想了解的是它在pyobjc中是如何工作的。