与所有的ui开发平台一样,.net下线程开发图形界面同样要遵循一个基本原则:就是对ui对象的操作一定要在产生该ui对象的线程里进行(该线程称作ui线程),因为大部分ui对象都不是线程安全的。
在.net中,把调用调用放在ui线程里执行是通过form类及其子类的invoke()方法实现的(具体的过程请参考其他资料),可以这样做是因为form对象保存了创建它的线程的信息,而且form类有一个bool类型的属性invokerequired,可以通过它查看当前线程是否为创建该form对象的线程(ui线程)——如果为true,则表示当前线程不是ui线程,反之则是。下面提供一个例子:
using system.threading;
using system.windows.forms;
namespace csharptest
{
public class testform : form
{
private form form1;
private form form2;
public static void
{