2013-05-31 29 views
1

我正在使用QuickTime API,需要在后台执行一些冗长的操作(如小时)。不幸的是,它并不是多线程友好的,所以我正在退回来在单独的进程中执行任务,因此所有与QuickTime相关的调用都可以在其主线程中发生。如何从可可应用程序启动并与无窗口和无控制台进程进行通信?

启动后,我需要一种获取反馈的方法,因为操作可能需要很长时间。

我不确定如何做到这一点,特别是:

  • 应该在单独的进程被编译成另一个可可的应用程序或命令行工具?
  • 如何从主可可应用程序启动它?
  • 如何定期从中获取对象以获取状态信息?
  • 如何确定何时完成?
  • 如何避免在调用时显示窗口/控制台?
  • 如何让它成为.app包的一部分,以便它不会作为单独的可执行文件显示给用户?

这些实际上是6+个问题,但它们非常相关且非常具体,我认为任何需要启动外部进程(而不是产卵工作线程)的人都可以从他们的答案中受益。通用代码示例将非常有帮助。

回答

1

如果可能,然后在命令行工具或其他形式的无GUI应用程序中实现该功能。对于Cocoa应用程序,可以阻止它们出现在Dock或Force Quit对话框中,但是命令行工具是一个单独的二进制文件,无论如何,这可能是更好的方法。

在启动工具方面,NSTask & NSPipe是您在这项工作中的朋友。这个工具肯定可以保存在你的主应用程序的bundle中,在Resources目录中或其他地方,然后在需要时启动。您可以使用管道来回通信。

我没有任何的示例代码交出,它已经很长一段时间,因为我已经没有机会使用这两种类的,所以我可以给的信息是有限的,但它应该是足够的点你在正确的方向。

相关问题