1

我正在使用 QuickTime API,需要在后台执行一些冗长的(以小时为单位)操作。不幸的是,它不是多线程友好的,所以我回退到在一个单独的进程中执行任务,所以所有与 QuickTime 相关的调用都可以在它的主线程中发生。

启动它后,我需要一种方法来获取有关其进度的反馈,因为操作可能需要很长时间。

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

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

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

4

1 回答 1

1

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

在启动该工具方面,NSTask 和 NSPipe 是您的朋友。该工具绝对可以保存在主应用程序的包中、资源目录或类似目录中,然后在需要时启动。您可以使用管道来回通信。

我手头没有任何示例代码,而且我已经有很长时间没有机会使用这些类中的任何一个了,所以我可以提供的信息是有限的,但它应该足以为您指明正确的方向.

于 2013-05-31T23:12:02.253 回答