C#线程使用基础
2013-12-05 11:11
253 查看
这两天在项目上需要使用多线程技术,研究了半天,碰到了一些问题,现在简要总结下。
线程的使用其实很简单,和JAVA里面差不多,但是还是有很多特别的地方,在C#中的线程,如果要对非线程创建的控件进行操作的话,就会有异常,所以需要使用委托来对其他控件进行操作。
线程使用的步骤:
1、编写产生线程所要执行的方法。
2、引用System.Threading命名空间。
3、实例化Thread类,并传入一个指向线程所要运行的方法的委托。
4、调用Thread实例的Start方法。
程序举例如下:
//主线程
{
...
Thread thread = new Thread(new ThreadStart(Safety)) ;
...
}
//如果要对控件进行操作,需要使用委托
//委托定义
delegate void DGSafety(args1,args2,...) ;
//委托声明
DGSafety dgSafety = null ; //委托对象声明
//操作函数
void Do(args1,args2,...) //操作控件的函数
{
...
}
//委托对象的实例化一般情况下是在窗体Load的时候就实例化
Form_Load(...)
{
dgSafety = new DGSafety(Do) ;
}
//线程中的函数
Safety(...)
{
......
//需要操作控件的时候
this.Invoke(dgSafety,args1,args2,...) ;
......
}
以上就是大致的线程使用过程,这里的重点就在委托上。
线程的使用其实很简单,和JAVA里面差不多,但是还是有很多特别的地方,在C#中的线程,如果要对非线程创建的控件进行操作的话,就会有异常,所以需要使用委托来对其他控件进行操作。
线程使用的步骤:
1、编写产生线程所要执行的方法。
2、引用System.Threading命名空间。
3、实例化Thread类,并传入一个指向线程所要运行的方法的委托。
4、调用Thread实例的Start方法。
程序举例如下:
//主线程
{
...
Thread thread = new Thread(new ThreadStart(Safety)) ;
...
}
//如果要对控件进行操作,需要使用委托
//委托定义
delegate void DGSafety(args1,args2,...) ;
//委托声明
DGSafety dgSafety = null ; //委托对象声明
//操作函数
void Do(args1,args2,...) //操作控件的函数
{
...
}
//委托对象的实例化一般情况下是在窗体Load的时候就实例化
Form_Load(...)
{
dgSafety = new DGSafety(Do) ;
}
//线程中的函数
Safety(...)
{
......
//需要操作控件的时候
this.Invoke(dgSafety,args1,args2,...) ;
......
}
以上就是大致的线程使用过程,这里的重点就在委托上。
相关文章推荐
- C#基础:使用Thread创建线程
- [非技术参考]C#基础:使用Thread创建线程(1)
- C#基础:使用Thread创建线程
- C#基础:使用Thread创建线程
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
- C# 子线程使用主线程中的控件问题
- C#中的线程(三) 使用多线程
- [C#基础]线程学习笔记(一)
- C#线程 BeginInvoke和EndInvoke使用方法
- CLR via C# 读书笔记 4-2 线程和锁的一些使用原则
- C#中用Invoke调用控件方法和BeginInvoke线程使用方法
- C#线程的使用方法简介
- C#使用线程时传参
- 线程基础:线程池(6)——基本使用(中)
- 关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
- VS2005 C#创建WebService使用线程(续)
- C#基础知识回顾--线程传参
- C#语言 第五部分 线程(一)线程基础(1)
- C# 异步线程任务使用Task await
- C# Winform使用线程改变窗体控件的属性