.NET提取?Thread?中返回值詳情
以下文章來源于公眾號DotNetCore實戰(zhàn)
Igor Bendrup:
關于如何獲取 Thread
中的返回值,不同的版本有不同的解決方案。
一、.NET 2.0+
你可以直接使用 Thread
對象,然后你可以使用閉包(聲明變量并在 lambda
中捕獲它),參考如下代碼:
object result = null; Thread thread = new System.Threading.Thread(() => {? ? ? //Some work... ? ? result = 42; }); thread.Start(); thread.Join(); Console.WriteLine(result);
也可以使用 IAsyncResult
然后在EndInvoke()
方法中獲取返回值。
BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (s, e) => { ? ? //Some work... ? ? e.Result = 42; }; worker.RunWorkerCompleted += (s, e) => { ? ? //e.Result "returned" from thread ? ? Console.WriteLine(e.Result); }; worker.RunWorkerAsync();
BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (s, e) => { ? ? //Some work... ? ? e.Result = 42; }; worker.RunWorkerCompleted += (s, e) => { ? ? //e.Result "returned" from thread ? ? Console.WriteLine(e.Result); }; worker.RunWorkerAsync();
還可以使用傳統(tǒng)的 BackgroundWorker
,然后在 RunWorkerCompleted
事件中捕獲。
二、.NET 4.0 +
從 .NET 4.0 開始,你可以通過 Task
的方式開啟 Thread
,如果想獲取返回值可以提取 Task
中的 Result
如下代碼:
//Main thread will be blocked until task thread finishes //(because of obtaining the value of the Result property) int result = Task.Factory.StartNew(() => { ? ? //Some work... ? ? return 42;}).Result;
三、.NET 4.5 +
從 .NET 4.5 開始, 你可以使用 await
,async
的方式替代 Task
的 Result
屬性,參考如下代碼:
int result = await Task.Run(() => { ? ? //Some work... ? ? return 42; });
建議:用 Task 來替代傳統(tǒng) Thread 所做的事情。
到此這篇關于.NET提取 Thread 中返回值詳情的文章就介紹到這了,更多相關.NET提取 Thread 中返回值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
.Net?Core?配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot
這篇文章主要介紹了.Net?Core配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09ASP.NET?Core?6最小API中使用日志和DI示例詳解
這篇文章主要為大家介紹了ASP.NET?Core?6最小API中使用日志和DI示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08.NET??Smobiler的復雜控件的由來與創(chuàng)造
這篇文章主要介紹了.NET Smobiler的復雜控件的由來與創(chuàng)造,Smobiler的復雜控件即利用自定義控件的方式組合控件,來使控件成為一個有機整體,里面的控件可相互協(xié)作交互,并使其達到高可用2022-08-08ASP.NET?Core使用Middleware設置有條件允許訪問路由
這篇文章主要介紹了ASP.NET?Core使用Middleware設置有條件允許訪問路由,文章圍繞主題相關資料展開學習內容,需要的小伙伴可以參考一下,希望對你的學習有所幫助2022-02-02asp.net mvc路由篇 如何找到 IHttpHandler方法介紹
學習是使用asp.net已經(jīng)有很長一段時間了,現(xiàn)在就來分析一下mvc的整過過程吧。個人計劃寫一個mvc系列的博文,僅從源代碼的角度來分析mvc。在接觸mvc時我們一定會經(jīng)歷路由,那么路由這東東是怎么搞出來的啊2012-11-11ASP.NET Core MVC 依賴注入View與Controller
本文重點給大家介紹的是ASP.NET Core MVC 之依賴注入 View 和ASP.NET Core MVC 之依賴注入 Controller的相關資料,需要的小伙伴可以參考下面文章具體內容2021-09-09