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);
}
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);
}
相关文章推荐
- C#学习笔记---函数 的理解及总结(入门级)
- 进程(应用程序)之二
- C# MessageBox常用用法
- C# 正则表达式匹配汉字
- C# 可视化读取文件、文件夹
- 【C#】C#删除Excel整行,更新单元格内容
- C# 利用DotRas 操作adsl
- C# MVC跳转
- K 均值聚类算法-C#
- 【C#语法】C#中强转和as、is的区别
- 第五章变量的更多内容
- C#_会员管理系统:开发六(数据搜索)
- 在C#中使用NPOI2.0操作Excel2003和Excel2007
- CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)
- 简单对比C#程序中的单线程与多线程设计
- 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)
- C#详解struct和class的区别
- 关于C# 委托(delegate)与事件(event)的用法及事例
- [转]LibreOffice-SDK 开发实战:嵌入MFC-View 和 C# Winform
- C#OOP之三 控制结构