我正在尝试编写一个宏来构建我的应用程序,启动一个外部工具,并将调试器附加到该外部工具。
除了大楼之外,一切都很正常。它构建,但它不会阻塞线程,因此外部工具在完成之前就被踢开了。有没有一种方法可以运行ExecuteCommand并等待线程完成?
代码如下:
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Build")
DTE.ExecuteCommand("Tools.ExternalCommand11")
Try
Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger
Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default")
Dim dbgeng(1) As EnvDTE80.Engine
dbgeng(0) = trans.Engines.Item("Managed")
Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, "MINIPC").Item("_nStep.exe")
proc2.Attach2(dbgeng)
Catch ex As System.Exception
MsgBox(ex.Message)
End Try发布于 2009-11-03 03:30:34
我相信这是在这个帖子上回答的:
发布于 2009-12-30 19:36:33
如果将调试器附加到第一个进程ClassViewContextMenus.ClassViewProject.Build和第二个进程,那么宿主进程可能会阻塞,直到第一个进程完成为止。或者,以其他方式获取第一个进程的进程句柄,并等待它退出。考虑到您正在做的巧妙的调试器工作,我想您应该比我更了解如何做这件事。
https://stackoverflow.com/questions/1526300
复制相似问题