Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DialogDebuggerVisualizer:COMException:对象处于僵死状态_C#_Visual Studio 2012_Comexception_Debuggervisualizer - Fatal编程技术网

C# DialogDebuggerVisualizer:COMException:对象处于僵死状态

C# DialogDebuggerVisualizer:COMException:对象处于僵死状态,c#,visual-studio-2012,comexception,debuggervisualizer,C#,Visual Studio 2012,Comexception,Debuggervisualizer,在调试会话中,我第一次尝试显示可视化工具时,它会引发该异常(显示在底部),我在异常消息对话框中单击“继续”,然后再次显示可视化工具(通过单击变量旁边的“放大镜图标”)。这是我拥有的简单可视化工具: [assembly: DebuggerVisualizer( typeof(TestVisualizer), Target = typeof (string), Description = "Test Visualizer")] namespace VuTree {

在调试会话中,我第一次尝试显示可视化工具时,它会引发该异常(显示在底部),我在异常消息对话框中单击“继续”,然后再次显示可视化工具(通过单击变量旁边的“放大镜图标”)。这是我拥有的简单可视化工具:

[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)

为什么会发生这种情况?如何解决?

一般来说,僵尸状态是以前启动的线程(由另一个线程启动)的状态最终完成了它的工作,但它没有将控件返回到创建它的调用线程,这意味着它什么也没做,但在某个地方仍然活着,这就是为什么他们调用“僵尸”的原因,因为它应该回来并结束它的寿命,但它既没有回来,也没有死亡。到目前为止,这个异常只有在我死的时候才会出现调试时,我在web应用程序、桌面、win应用程序等中看到了此问题。解决此问题所需的只是重新启动应用程序。这将释放所有分配的资源,一切都应恢复正常。上次遇到此异常是在将调试程序附加到w3wp.exe pr后调试IIS中托管的web应用程序时ocess(应用程序池)