Dav*_*ens 6 iphone multithreading objective-c ios
我有一个后台线程正在做一堆工作 - 加载应用程序.主线程正在UIProgressView上显示进度.
后台线程正在使用performSelectorInBackground生成(但是,如果不同的方法使这个问题更容易解决,我不会接受这个方法)
[self performSelectorInBackground:@selector(loadAppInBackground) withObject:self];
Run Code Online (Sandbox Code Playgroud)
有时一个错误导致后台线程崩溃(应用程序发展时出现不同的错误)导致进度条停止,但用户没有明确指出任何错误.
我想要发现这种情况,并且更优雅地失败,而不是简单地挂起,直到用户放弃等待.
由于加载过程的持续时间可能差异很大,因此简单的超时不是理想的选择.
前台线程检测后台线程失败的最佳方法是什么?由于前台线程忙于处理UI,它是否需要第二个后台线程来监视第一个?这看起来很难看.
是否有一些线程到线程的通信机制可用于"ping"后台进程?更好的是,检查其他线程状态的低级系统机制?
调试器知道正在运行的所有线程......并且似乎知道它们的状态.我想知道我的应用程序是否有可以执行相同操作的电话.
Objective C 中似乎没有机制可以直接检查后台线程的状态。提供的任何答案都是不错的选择......要么超时,要么让线程创建某种其持续存在的证据。
我希望能有更简单、更可靠、更实时的东西。
我将尝试捕获线程中的异常,并可能生成诸如“BackgroundThreadException”之类的通知,前台线程可以侦听并做出反应。
归档时间: |
|
查看次数: |
948 次 |
最近记录: |