Loading
0

c#实现Thread创建异步线程

若该文章解决了您的问题,可否收藏+评论+分享呢?
c#实现Thread创建异步线程
使用构造方法创建线程,构造方法接受一个ThreadStart类的参数,它是一个委托。

Thread thread = new Thread(() => Console.WriteLine("123"));

Thread类常用的API

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;
    });

}


最后返回的是一个委托,而不是返回值本身,其目的是为了尽可能的减少阻塞主线程,在需要用到返回值的时候再执行委托获取返回值,从而最大程度的避免阻塞主线程。

 

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-23-36073-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:c#用委托创建异步线程
下一篇:c#ThreadPool创建异步线程