我有一段時間處於掛起狀態的.NET窗體窗體應用程序。當我把流程轉儲並通過WinDbg/SOS打開它時,它顯示一個線程有一個對kernel32!WaitForMultipleObjectsEx
的調用,但我沒有在該特定方法的任何事件對象上調用任何WaitXXX API。在我正在對InvokedRequired和IsDisposed API進行檢查時說過。是否調用InvokedRequired或IsDisposed API在內部調用任何WaitXXX API?爲什麼在這個方法中看到對WaitForMultipleObjectsEx的調用?
這是線程的調用堆棧。
[HelperMethodFrame_1OBJ: 0e4eedc0] System.Threading.WaitHandle.WaitOneNative(Microsoft.Win32.SafeHandles.SafeWaitHandle, UInt32, Boolean, Boolean)
0e4eee6c 67b7689f System.Threading.WaitHandle.WaitOne(Int64, Boolean)
0e4eee88 67b76855 System.Threading.WaitHandle.WaitOne(Int32, Boolean)
0e4eee9c 65c21a4f System.Windows.Forms.Control.WaitForWaitHandle(System.Threading.WaitHandle)
0e4eeeb0 65f5d68b System.Windows.Forms.Control.MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean)
0e4eef50 65c233ac System.Windows.Forms.Control.Invoke(System.Delegate, System.Object[])
0e4eef84 65c2334f System.Windows.Forms.Control.Invoke(System.Delegate)
0e4eef88 6715ad76 MyNameSpace.MyClass.MyMethod()
0e4eefb0 67b96e96 System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
0e4eefbc 67ba031f System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
0e4eefd4 67b96e14 System.Threading.ThreadHelper.ThreadStart()
0e4ef1fc 68f81b4c [GCFrame: 0e4ef1fc]
爲什麼你不告訴我們當時你的代碼在做什麼? – Gabe