我有一个后台线程正在做一堆工作 - 加载应用程序。主线程在 UIProgressView 上显示进度。
后台线程是用 performSelectorInBackground 产生的(不过,如果不同的方法使这个问题更容易解决,我不喜欢这种方法)
[self performSelectorInBackground:@selector(loadAppInBackground) withObject:self];
在某些情况下,一个错误导致后台线程崩溃(随着应用程序的发展出现不同的错误),导致进度条停止,但用户没有得到任何错误的明确指示。
我想检测这种情况并且比简单地挂起直到用户放弃等待更优雅地失败。
因为加载过程的持续时间可能会有很大差异,所以简单地超时并不是一个理想的选择。
前台线程检测后台线程失败的最佳方法是什么?由于前台线程忙于处理 UI,是否需要第二个后台线程来监视第一个?这看起来很难看。
是否有一些线程间通信机制可用于“ping”后台进程?更好的是,检查其他线程状态的低级系统机制?
调试器知道所有正在运行的线程......并且似乎知道它们的状态。我想知道我的应用程序是否可以调用来做同样的事情。