2009-10-06 69 views
1

我正在嘗試編寫一個宏,用於構建我的應用程序,啓動外部工具並將調試器提供給該外部工具。用於構建的Visual Studio 2008宏不會阻塞線程

除了建築物,一切都在工作。它會構建,但它不會阻塞線程,因此外部工具在完成​​之前就會被啓動。有沒有辦法可以運行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 

回答

0

如果調試器附加到第一過程,ClassViewContextMenus.ClassViewProject.Build,如那麼第二次大概是主機進程會阻塞,直到第一個進程完成。或者以其他方式獲取第一個進程的進程句柄並等待它退出。鑑於你正在做的聰明的調試工具,我假設你會知道如何做得更好。