【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吧。
  • 1
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值