C# 开发编程

C#编程一般针对微软.NET系列(包括.NET Framework 和 .NET Core)工具和Runtime

由于SystemEvents.OnUserPreferenceChanged事件,WinForms应用程序挂起

我一直在处理我的客户端安装中的一个奇怪的应用程序挂起。 在尝试了几件事之后,我得出的结论是,如果没有转储,它将无法工作。 所以我在挂机时从我的一个客户那里收了一个转储。 我必须注意,它只发生在我的安装中而不是我的开发计算机中。 在我的转储中,我看到SystemEvents.OnUserPreferenceChanged事件导致我的UI线程阻塞等待线程,这不再是消息。 在这里和谷歌搜索后,我发现有些人我们也遇到了这个问题。 我上下我的代码,看看我们是否有机会在非UI线程上创建控件或表单,但没有运气。 这是我的!clrstack 0012ee5c 7c90e514 [HelperMethodFrame_1OBJ: 0012ee5c] System.Threading.WaitHandle.WaitOneNative(Microsoft.Win32.SafeHandles.SafeWaitHandle, UInt32, Boolean, Boolean) 0012ef08 792b68af System.Threading.WaitHandle.WaitOne(Int64, Boolean) 0012ef24 792b6865 System.Threading.WaitHandle.WaitOne(Int32, Boolean) 0012ef38 7b6f1a4f System.Windows.Forms.Control.WaitForWaitHandle(System.Threading.WaitHandle) 0012ef4c 7ba2d68b System.Windows.Forms.Control.MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean) 0012efec 7b6f33ac System.Windows.Forms.Control.Invoke(System.Delegate, System.Object[]) 0012f020 7b920bd7 System.Windows.Forms.WindowsFormsSynchronizationContext.Send(System.Threading.SendOrPostCallback, System.Object) 0012f038 7a92ed62 Microsoft.Win32.SystemEvents+SystemEventInvokeInfo.Invoke(Boolean, System.Object[]) 0012f06c 7a92dc8f Microsoft.Win32.SystemEvents.RaiseEvent(Boolean, System.Object, System.Object[]) 0012f0b8 7a92e227 Microsoft.Win32.SystemEvents.OnUserPreferenceChanged(Int32, IntPtr, IntPtr) […]