【问题标题】:How to Kill/Stop a background thread?如何杀死/停止后台线程?
【发布时间】:2010-11-10 22:16:00
【问题描述】:

所以我有一个执行循环的方法,并且由于我的程序的工作方式,我正在使用此方法调用此方法,

[self performSelectorInBackground:@selector(myMethod:) withObject:arg];

还有方法本身,

- (void)myMethod:(id)arg {
    //...

    for (//Loop Conditions) {
        if (stopMorse) {
            break;
        }
        //Do stuff
    }

    //...
}

现在我想让用户停止这个循环的运行,那么有没有办法杀死/停止线程。

我尝试添加一个 BOOL,但问题是它似乎没有更新,因为它位于单独的线程上。阻止此循环运行的最佳方法是什么?

【问题讨论】:

  • 告诉我们BOOL stopMorse 的声明位置(全局、类实例等)并向我们展示您更改它的代码。

标签: iphone iphone-sdk-3.0 ios4


【解决方案1】:

您不应出于this answer to a similar questionthis answer to another similar question 中所述的原因强行终止/停止线程。

应该可以像您一样检查布尔值,并且另一个线程设置布尔值应该没有问题。您可以发布尝试设置布尔值的代码吗?

【讨论】:

  • 感谢您的帮助。我能够弄清楚。就像你说的那样,当另一个线程设置它时,可以检查一个布尔值。这只是我的代码中的一个简单错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
相关资源
最近更新 更多