我正在尝试为MonoDevelop创建一个加载项,它将运行从外部工具触发的命令(例如:更新源代码,构建和运行来自Jabber的传入消息的项目)。由于我找不到宏,我使用“命令”,通过IdeApp.CommandService.DispatchCommand()调用它们。对于单个动作,这很有效,但是当我尝试按顺序运行多个命令时,它们会同时执行。 那么,如何实现命令队列,其中一个命令等待先前的完成?
答案 0 :(得分:0)
DispatchCommand是同步的,但是它运行的某些命令可能会启动异步操作,并且命令无法返回这些操作的句柄。
对于那些特定命令,我建议您不要将它们作为命令分派,而是直接调用高级API来执行这些操作。例如,IdeApp.ProjectOperations.Build返回一个IAsyncOperation句柄,您可以使用其WaitForCompleted方法阻止该句柄。您可以使用IdeApp.Workspace打开项目并获取已打开项目的句柄,设置活动配置等。