![技术小学生微信公众号 技术小学生微信公众号](/d/file/p/2023/11-06/384a0f88dc69e6f0b9276fec739fb818.png)
![腾讯云服务器大促销。](/d/file/p/2023/06-06/8f2af9e8846e4a93cc2a3890462510dc.png)
![华为服务器](/d/file/p/2023/07-25/08518ffe66f6cea5a59993d8b8d33b96.jpg)
使用构造方法创建线程,构造方法接受一个ThreadStart类的参数,它是一个委托。
Thread类常用的APIThread thread = new Thread(() => Console.WriteLine("123"));
thread.Join();
//阻塞其他进程
thread.Start();
//开启线程
thread.Abort();//终止线程
Thread类扩展封装
Thread类没有可以获取异步线程返回值这类的API,我们可以自己扩展
public Func<T> ThreadWithCallBack<T>(Func<T> func)
{
T t = default(T);
Thread thread = new Thread(() =>
{
t = func.Invoke();
});
thread.Start();
return new Func<T>(() =>
{
thread.Join();
return t;
});
}
最后返回的是一个委托,而不是返回值本身,其目的是为了尽可能的减少阻塞主线程,在需要用到返回值的时候再执行委托获取返回值,从而最大程度的避免阻塞主线程。
![技术小学生微信公众号 技术小学生微信公众号](/d/file/p/2023/11-06/384a0f88dc69e6f0b9276fec739fb818.png)
![华为服务器](/d/file/p/2023/07-25/08518ffe66f6cea5a59993d8b8d33b96.jpg)
![腾讯云服务器大促销。](/d/file/p/2023/06-06/8f2af9e8846e4a93cc2a3890462510dc.png)
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
文章评论 本文章有个评论