运行代码一段时间并在必要时终止

时间:2010-02-23 15:51:35

标签: cocoa scripting kill nsthread

我正在使用脚本桥从我的cocoa应用程序中查询iTunes。有时iTunes弹出一个窗口(就像ipod需要更新等),当弹出窗口打开时,我无法从iTunes获取任何信息。因此,如果我在iTunes处于此状态时请求信息,我的应用程序将完全锁定,直到该弹出窗口被解除。

所以我需要某种机制,我可以在一个单独的线程中询问itunes一些简单的东西,看看我是否可以从它得到一个响应......如果那个单独的线程在短时间内没有收到响应时间我的主线程将只杀死该线程,因此知道不要在特定时间查询itunes。

任何想法如何创建这样的机制?我搜索了杀死线程的方法,但没有找到任何线程。

2 个答案:

答案 0 :(得分:1)

你的问题与线程无关;这是你的超时太长了。无论你做什么,都应该在大约一分钟后失败。

要解决此问题,请向the SBApplication object发送setTimeout:消息,并传递您希望等待的时间。该值以刻度表示,其中每秒正好为60个。

(有些消息来源说60.15,而Apple自己的文档说“大约”60,但我只测量了10分钟TickCount,而划分600秒的结果恰好是60.0。代码I使用:
NSLog(@"Ticks per second: %f", (end - start) / (60.0 * numMinutes));其中endstart是来自TickCount的结果{。}}。

答案 1 :(得分:0)

查看NSOperation / NSOperationQueue。