Tag: heisenbug

WinformsmultithreadingUI操作的随机跨线程操作exception

出于某种原因,这种安全的方法引发了一个典型的例外。 跨线程操作无效:控制’statusLabel’从其创建的线程以外的线程访问。 显然,当需要调用时,此代码应通过Invoke调用匿名方法。 但每隔一段时间就会发生exception。 有没有人有类似的问题? private void SetProgressBarValue(int progressPercentage) { Action setValue = () => { var value = progressPercentage; if (progressPercentage 100) value = 100; statusProgressBar.Value = value; statusLabel.Text = string.Format(“{0}%”, value); }; if (InvokeRequired) Invoke(setValue); else setValue(); } [UPDATE2] 在实施John Saunders的建议后 ,仍然遇到了同样的错误 at System.Windows.Forms.Control.get_Handle() at System.Windows.Forms.Control.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, […]

程序和调试器退出而没有指示问题

好吧,不是Heisenbug,但性质相似。 我正在开发一个WPF应用程序。 调试时,逻辑到达某个点,然后应用程序无缘无故退出。 VS调试器没有捕获任何内容,输出窗口中的以下是问题的唯一指示: 程序'[6228] SomeApp.vshost.exe:Managed(v4.0.30319)’已退出,代码为1073741855(0x4000001f)。 在调试发行版本时,或者确实从调试器运行调试版本时(实际上所有组合都没有在调试器中运行调试版本),一切正常。 我试图用以下代码捕获未处理的exception: AppDomain .CurrentDomain .UnhandledException += (sender, e) => { Debug.WriteLine(“Unhandled Exception ” + e.ExceptionObject); }; Application .Current .DispatcherUnhandledException += (sender1, e1) => { Debug.WriteLine(“DispatcherUnhandledException ” + e1.Exception); }; ……但是我没有抓到任何东西。 我正在考虑使用调试输出语句来修改应用程序,但它是高度异步的,因此阅读这将是艰巨而乏味的。 所以告诉我,如果你能……我怎么开始计算WTF正在进行?