C#.NET:浅述WinForm多线程编程与C…
来源:互联网 发布:tpshop源码下载 编辑:程序博客网 时间:2024/05/17 22:18
本文介绍在WinForm开发中如何使用多线程,以及在线程中如何通过Control.Invoke方法返回窗体主线程执行相关操作。
-. WinForm多线程编程
1. new Thread()
private
private
新开一个线程,执行一个方法,并传递参数:
private
}
private
}
参数定义为object类型。
2. ThreadPool
private
}
private
}
有参数传递:
private
}
private
}
使用匿名方法更灵活:
private
}
在匿名代码段里面可以直接访问局部变量,不用在关心参数传递的问题
二. Invoke
1. this.Invoke
现在,在业务线程里面执行完毕,要改变窗体控件的值了,此时,如果直接通过this得到控件的句柄,然后对它进行操作是会抛异常的,.NetWinFormApplication里面是不允许这样的操作的。这是,可以调用Invoke方法
2.Invoke方法签名:
object Control.Invoke(Delegate Method)
object Control.Invoke(Delegate Method, params object[]args)
3.使用自定义委托
private
}
private
private
}
private
}
4.使用System.Action:
private
}
private
}
private
}
本例传递一个参数,System.Action有很多个重载,可以无参数(非泛型),而最多可以有四个参数,同样采用匿名方法,不使用泛型形式的System.Action,如下:
private
}
private
}
5.使用System.Func
如果Invoke调用主窗体操作之后,还希望在调用完得到一个返回值:
private
}
private
}
private
}
result的值为 999。
System.Func同样有很多泛形重载,这里不赘述。
6.关于Invoke的拥有者:Control
本文例中都是用this来引用,这里this替换为窗体任何一个控件的句柄都是OK的,因为Control.Invoke含义是将方法委托给拥有该Control的线程去执行。
转自:http://www.cnblogs.com/haozhiyu/archive/2008/07/28/1195703.html
- C#.NET:浅述WinForm多线程编程与C…
- C#.net winform skin
- WPF、WinForm(C#)多线程编程并更新界面(UI)
- WPF、WinForm(C#)多线程编程并更新界面(UI)
- WPF、WinForm(C#)多线程编程并更新界面(UI)
- C#winform TreeView编程
- c#/winform 串口编程
- c#.net 多线程编程学习(1)
- c#.net 多线程编程学习(2)
- c#.net 多线程编程学习(3)
- C#.net 多线程编程(一)
- C#.net 多线程编程(二)
- C#winform控件多线程访问
- C#winform控件多线程访问
- 【.Net码农】C#WinForm编程中多语言的实现
- c#.net多线程编程教学(1):多任务和多线程
- C#.NET多线程编程(1):多任务和多线程
- c#.net多线程编程教学(1):多任务和多线程
- ASP.NET整理:缓存机制之部分缓存
- ASP.NET整理:缓存机制之整页缓存
- 整理:SqlCommand调用存储过程(ret…
- winform:无法引用其他类库,dll,us…
- C#.NET:Invoke和BeginInvoke的一…
- C#.NET:浅述WinForm多线程编程与C…
- ASP.NET:AutoComplete所有属性介…
- C#.NET:WCF系列笔记之通过配置文…
- C#.NET:WCF系列笔记之通过代码部…
- C#.NET:WCF系列笔记之通信模式
- Oracle:常用命令整理汇总,不包含…
- C#.NET:WCF系列笔记之同步、异步
- .NET笔记系列:LAMBDA表达式常用写…
- C#.NET:petshop之membership(上篇…