C# 开启子线程的四种情况

接触C#和VS也差不多五个月了,其实也还是个小白,关于线程的用法其实在网上找又一大堆,无形参无返回,无形参有返回,有形参无返回,有形参有返回的四种情况,简单的总结一下我使用过的方法吧~

1.无形参无返回

Thread thread = new Thread(doWork);
thread.start();

2.无形参有返回
(这里的栗子是,doThread返回一个bool值)

public delegate bool MyDelegate();//根据doThread的返回类型声明一个委托

private  void delegateThread()
{
    MyDelegate dele = new MyDelegate(doWork);//委托,但是还是还会在主线程上处理
    bool result = dele.Invoke(); //收集返回值
}

private void doThread()
{
    Control.CheckForIllegalCrossThreadCalls = false;//防止获取界面控件是抛出的异常
    Thread thread = new Thread(new ThreadStart(delegateThread));
    thread.Priority = ThreadPriority.Highest;//优先级
    thread.IsBackground = true;//与程序共存亡
    thread.Start();
}

3.有形参无返回

Control.CheckForIllegalCrossThreadCalls = false;
ThreadStart starter = delegate { doWork(parameter); };//parameter就是填入的参数
Thread thread= new Thread(new ThreadStart(starter));
thread.IsBackground = true;
thread.Start();

4.有形参有返回
(这里的栗子是,doThread一个int型的形参是,返回一个int值)
其实跟2.无形参有返回 差不多,都是用一个委托函数包起来。还有可以用一个类,把你的方法和成员变量包起来用也是一样可以的。我这里就说一种方法吧。

public delegate int MyDelegate(int a);

static void Main(string[] args)
{
    Thread thread;
    thread = new Thread(new ThreadStart(delegateThread));
    thread.Start();
    thread.IsBackground = true;

    Console.ReadLine();
}

private static void delegateThread()
{
    MyDelegate dele = new MyDelegate(doWork);
    int result = dele.Invoke(3); //收集返回值
    Console.WriteLine("result:" + result);

}

private static int doWork(int num)
{
    Console.WriteLine("doWork!\n");
    return num * num;
}

其实每种情况都有多种实现的方法,这里就只介绍下我用过的,可能有些欠缺的地方,欢迎指点~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,918评论 0 38
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,776评论 0 33
  • 养儿防老,不啃老就算你的造化了。即使他们想养他们有这个能力吗?如果要独立成长,不想依赖在别人身上,你应该做什么? ...
    吃肉的唐僧阅读 361评论 0 0
  • 想写这篇言语,是一句提问发起的。 前一天下午,我在上班,公司里一个员工查出癌症半年不治走了,要定抚恤金;下半年分公...
    沁可阅读 434评论 0 0