【发布时间】:2010-02-26 14:26:15
【问题描述】:
在 .NET 应用程序上工作时,我在“跨线程操作无效”异常中运行,只是它似乎发生在正确的线程中。 有没有办法找出创建特定控件的线程是哪个线程?
到目前为止我发现了什么:
“InvokeRequired”操作仅告诉当前线程是否是“所有者线程”...
在 Control.Invoke(...) 方法上使用 Reflector 的一段有趣时光让我找到了 user32.dll 中的 P/Invoke 方法,该方法从窗口句柄中获取线程 ID:
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern int GetWindowThreadProcessId(HandleRef hWnd, out int lpdwProcessId);
【问题讨论】:
标签: .net user-interface multithreading