


使用构造方法创建线程,构造方法接受一个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;
});
}
最后返回的是一个委托,而不是返回值本身,其目的是为了尽可能的减少阻塞主线程,在需要用到返回值的时候再执行委托获取返回值,从而最大程度的避免阻塞主线程。



亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
文章评论 本文章有个评论