【C#】多线程之thread与task

最近有个用C#开发的winform软件,需要调用matlab导出的dll文件。最开始把dll中类的初始化放在了主窗体的构造函数里面,结果软件打开30多秒才显示界面。由于dll不是本人写的,没法改,只能在C#程序上想办法。

两个方案:

  1. 使用Timer,在主窗体的load事件里面触发timer,将初始化的代码放在timer_Tick里面。

尝试延时10秒触发Tick事件,窗体秒开,但是10s之后假死,体验不好。
这种方法可能在加载大数据的时候可以用用。

  1. 使用多线程的方法,主线程打开窗体,在load()里面再开一个线程用来进行初始化。

效果很好!!

本打算自己写的,发现网上已经有人整理的比较好了,直接搬过来吧。

  1. 用Thread类,讲的非常详细。
    https://www.cnblogs.com/dotnet261010/p/6159984.html

  2. 用Task类,.net4.0以后的。
    http://www.cnblogs.com/yunfeifei/p/3993401.html

  3. 讨论Task和Thread在效率上有何区别。
    https://bbs.csdn.net/topics/390596863

总结一下:

  • 最开始多线程都用的是Thread,命名空间为using System.Threading。Task是在 .net 4.0之后提供的,命名空间为System.Threading.Tasks
  • 一般来说,Task更适合多核心处理器,最好是Intel i系列。
  • 电脑配置可以额情况下还是尽量用Task吧。

你可能感兴趣的:(C#,matlab,多线程,task,thread)