c#之初识_多线程

所谓单线程着只能让我们的程序去做一件单一的事情,严重时会出现程序“假死”的现象,而如果我们需要同时去做两个及以上的事情时则需用多线程。多线程能让计算机“同时”处理多个事情,节约时间,后台运行程序,提高程序的运行效率也不会出现主界面无响应的情况。

产生一个线程的四步骤:

一、编写产生线程所要执行的方法

二、引用System.Threading;命名空间

三、实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还未运行)

四、调用Thread实例的Start方法,标记该线程可以被CPU执行了,具体什么时候被执行由CPU决定

//创建一个线程→去执行一个方法
Thread th = new Thread(方法名);

//将线程设置为后台线程
th.IsBackground = true;

//标记这个线程准备就绪了,可以随时被执行。具体什么时候被执行由CPU决定
th.Start();

线程分为前台线程与后台线程

前台线程:只有所有的前台线程都关闭才能完成程序关闭;

后台线程:只要所有的前台程序结束,后台线程自动结束;

注意在.Net framework下是不允许跨线程的访问,那怎样能解决跨线程访问的问题呢?见下图:

如图返回的是一个bool类型,在Form1_Load里写上Control.CheckForIllegalCrossThreadCalls = false;

                              --------------------------------------------------------------------------------------------------------

当我们关闭主窗体/主线程时,主窗体上的资源就会释放掉;但是后台线程出于某些原因并没马上结束,且后台线程还在访问前台的内容时就有可能会抛出各式各样的异常;

所以我们需要在点击窗体关闭按钮的时候(关于Form1属性-事件-FormClosing),需要判断新线程是否为null;如果新线程为null就说明新线程也被关闭了,如果不为null那么我们手动的将他关闭掉;

if(th != null)
{
    //结束这个线程  注意!!!!线程Abort之后就不能被重新Start了!!!
    th.Abort();
}

                             

                                 ---------------------------------------------------------------------------------------------------------

Thread.Sleep(1)静态方法,可以使当前线程停止一段时间运行;(单位:毫秒)

Thread.CurrentThread获得当前线程的引用;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值