C#多线程操作入门【1】:线程开始与中止

0. 什么是多线程?

        初学编程的伙伴们对单线程一定很熟悉,一定记得计算汉诺塔等时间复杂度比较大的程序时,控制台会“卡住”半天才蹦出结果。所谓单线程,就是一次只完成一项任务(Task),只有完成了手上这个步骤,才会继续下一个步骤。而多线程,其实就是多个任务同时执行(Multi-tasking)。比如说,一边煮咖啡,一边写代码,煮咖啡与写代码就是两个独立的线程。

        为什么我们需要多线程?因为单线程有其局限性。单线程的程序,就是只能先煮好咖啡, 再去写代码(当然对码农而言更可能是反过来),咖啡没有煮好,就必须蹲在咖啡壶前傻等,别的什么也不能做,所谓的“线程阻塞”,就是这个意思,线程会卡住,窗体界面会卡死。而有了多线程,就可以在等咖啡好的同时敲代码,这对不得不熬夜的码农而已,实在是快乐++的助攻(也是发量减减的助攻)。

        咖啡壶会在煮好后发出提示音,这代表这个线程结束了。同样的,多线程任务也可能在结束时返回值,或者返回void空值,就是没有返回值的意思。

1. .NET平台常用的多线程分类

        多线程操作有两种常用写法,一种是Thread,另一种是async/await语句。这次我们主要谈论Thread语法,async/await语句留给下一篇。

2. Thread用法举例

此处代码完成了Thread变量、ThreadStart变量的声明、实例化以及线程的开启操作。

using System.Threading.Tasks;
namespace asyncRead
{
    public partial class Form1 : Form
    {
        #region 多线程Thread定义
        Thread thCache;
        ThreadStart tsCache;
        #endregion
    public Form1()
        {
			System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
            //运行跨线程更新控件
            tsCache = new ThreadStart(UpdateCache);
            //链接thCache与返回值与参量均为void的函数UpdateCache
        }
    public void UpdateCache()
    {
        //多线程操作
    }
    public void Action()
    {
        thCache  = new Thread(tsCache);
        thCache.Start();
    } 
}

3. 用法详解

        

线程的声明名称1= ThreadStart(方法名);名称2 = Thread(名称1);方法参数与返回值都为void

名称1 = ParameterizedThreadStart(方法名);

名称2 =Thread(名称1);

方法的参数为object,返回值为void
线程的开始名称2.Start()
线程的终止名称2.Abort()

注意,必须先实例化线程,才能执行开始与中止操作。可以在开始或终止前加空值判断(if(名称2==null)或直接用空值运算符?.)。还可以查看ThreadState属性,确定线程状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值