|
1
|
| Tharik Kanaka · 技术社区 · 13 年前 |
|
|
1
1
因为你正在从Worker线程访问UI线程的DataGridView1,所以你会得到奇怪的行为。 我用这个代码测试了你的小应用程序,得到了正常的预期行为。 我修改了您的loadCustomerGrid方法,并添加了另一个method和Delegate方法。
说明: “从工作线程安全访问控件的方法是通过委派。首先测试控件的InvokeRequired属性,该属性将告诉您是否可以安全访问控件。InvokeRequired是control类中为数不多的线程安全成员之一,因此您可以在任何位置访问它。如果该属性为True,则需要调用来访问控件,因为se当前方法在一个线程上执行,而不是在拥有控件的Handle的线程上执行。 调用是通过调用控件的Invoke或BeginInvoke方法来执行的。您创建一个委托,它是一个包含对方法的引用的对象。将其作为当前方法的参考是一种良好的做法。然后将该委托传递给Invoke或BeginInvoke方法。这将再次调用被引用的方法,这次是在拥有控件的Handle的线程上。" 来源:jmcilinney post从工作线程访问控件 http://www.vbforums.com/showthread.php?498387-Accessing-Controls-from-Worker-Threads |