如果使用多线程来提高 Windows 窗体应用程序的性能,则必须确保以线程安全方式调用控件。
访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能会出现其他与线程相关的 Bug,例如争用情况和死锁。确保以线程安全方式访问控件非常重要。
.NET Framework 可帮助您检测以非线程安全方式访问控件这一问题。InvalidOperationExceptio
此异常在调试期间和运行时的某些情况下可靠地发生。在调试以 .NET Framework 2.0之前的 .NET Framework 编写的应用程序时,可能会出现此异常。CheckForIllegalCrossThre
------------------------------------------下面才是安全调用方式----------------------------------
对 Windows 窗体控件进行线程安全调用
-
InvokeRequired property." data-guid="9796383d82cfbcc824efb5a0
235272e9">查询控件的 InvokeRequired 属性。 -
InvokeRequired returns true, call Invoke with a delegate that makes the actual call to the control." data-guid="e4c9267f608ffcc3011b7f39
ce0148d6">如果 InvokeRequired 返回 true,则使用实际调用控件的委托来调用 Invoke。 -
InvokeRequired returns false, call the control directly." data-guid="9e810d8012c1a941754f00b8
19efdfa3">如果 InvokeRequired 返回 false,则直接调用控件。
ThreadProcSafe method, which is executed by the background thread." data-guid="b22333bf40417ea55e419e79