2013-12-22 131 views
4

我第一次在調試會話中嘗試顯示可視化器時,它引發了該異常(出現在底部),我在異常消息對話框上單擊「繼續」並再次表明該可視化(通過點擊「放大鏡旁邊變量圖標)這是一個簡單的可視化工具,我有:DialogDebuggerVisualizer:COMException:對象處於殭屍狀態

[assembly: DebuggerVisualizer(
    typeof(TestVisualizer), 
    Target = typeof (string), 
    Description = "Test Visualizer")] 

namespace VuTree { 
    public class TestVisualizer : DialogDebuggerVisualizer { 
     protected override void Show(IDialogVisualizerService svc, IVisualizerObjectProvider provider) { 
      var text = provider.GetObject() as string ?? "no object found..."; 
      using (var form = new Form()) 
      { 
       form.Text = text; 
       form.Size = new Size(400, 400); 
       svc.ShowDialog(form); 
      } 
     } 
    } 
} 

這是(部分)除外:

************** Exception Text ************** 
System.Runtime.InteropServices.COMException (0x8013134F): Object is in a zombie state. (Exception from HRESULT: 0x8013134F) 

Server stack trace: 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.IPropertyProxyEESide.InitSourceDataProvider(IEEDataStorage& data) 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.SafeProxyWrapper.InitSourceDataProvider() 
    at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.SafeProxyWrapper.InitSourceDataProvider() 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.DelegatedHost.CreateViewer(IntPtr hwnd, HostServicesHelper hsh, SafeProxyWrapper proxy) 

爲什麼會發生?如何解決?

回答

1

一般來說,殭屍狀態是以前啓動的線程(由另一個線程)最終完成它的工作,但它沒有將控制權返回給創建它的調用線程,這意味着它正在執行只是在某個地方仍然活着,這就是爲什麼他們稱之爲殭屍,因爲它應該回來並結束它的壽命,但它不會回來或死亡。到目前爲止,只有當我正在調試時,這個異常纔出現在我身上,我看到它與Web應用程序,桌面,贏得apps.etc,只需要重新啓動應用程序。這將釋放所有分配的資源並且一切都應該恢復正常。上次我遇到這個異常的時候,我在調試器附加調試器到w3wp.exe進程(應用程序池)後,正在調試託管在IIS中的Web應用程序。