您的位置:首页 > 编程语言 > C#

c#使用MethodInvoker解决跨线程访问控件

2016-04-24 23:08 507 查看
功能函数测试集锦(77)

C#专区(114)


版权声明:本文为博主原创文章,未经博主允许不得转载。

.net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,有一种方法是禁止编译器对跨线程访问作检查,Control.CheckForIllegalCrossThreadCalls = false;可以实现访问,但是出不出错不敢保证C#跨线程访问控件运行时错误。
使用MethodInvoker即可解决:

原代码:

private void btnOK_Click(object sender, EventArgs e)
{
tslInfo.Text = "请稍候...";
Thread td = new Thread(new ThreadStart(run));
td.Start();
}

/// <summary>
/// 线程方法
/// </summary>
private void run()
{
this.tslInfo.Text = "就绪";
}

修改后:
private void btnOK_Click(object sender, EventArgs e)
{
tslInfo.Text = "请稍候...";
Thread td = new Thread(new ThreadStart(threadRun));
td.Start();
}

/// <summary>
/// 原线程方法
/// </summary>
private void run()
{
this.tslInfo.Text = "就绪";
}

/// <summary>
/// 线程方法
/// </summary>
private void threadRun()
{
MethodInvoker In = new MethodInvoker(run);
this.BeginInvoke(In);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: