.NET提取?Thread?中返回值詳情
以下文章來(lái)源于公眾號(hào)DotNetCore實(shí)戰(zhàn)
Igor Bendrup:
關(guān)于如何獲取 Thread
中的返回值,不同的版本有不同的解決方案。
一、.NET 2.0+
你可以直接使用 Thread
對(duì)象,然后你可以使用閉包(聲明變量并在 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 開始,你可以通過(guò) 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 來(lái)替代傳統(tǒng) Thread 所做的事情。
到此這篇關(guān)于.NET提取 Thread 中返回值詳情的文章就介紹到這了,更多相關(guān).NET提取 Thread 中返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.Net?Core?配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot
這篇文章主要介紹了.Net?Core配置文件讀取IOptions,IOptionsMonitor,IOptionsSnapshot,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09ASP.NET?Core?6最小API中使用日志和DI示例詳解
這篇文章主要為大家介紹了ASP.NET?Core?6最小API中使用日志和DI示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08.NET??Smobiler的復(fù)雜控件的由來(lái)與創(chuàng)造
這篇文章主要介紹了.NET Smobiler的復(fù)雜控件的由來(lái)與創(chuàng)造,Smobiler的復(fù)雜控件即利用自定義控件的方式組合控件,來(lái)使控件成為一個(gè)有機(jī)整體,里面的控件可相互協(xié)作交互,并使其達(dá)到高可用2022-08-08ASP.NET?Core使用Middleware設(shè)置有條件允許訪問(wèn)路由
這篇文章主要介紹了ASP.NET?Core使用Middleware設(shè)置有條件允許訪問(wèn)路由,文章圍繞主題相關(guān)資料展開學(xué)習(xí)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-02-02asp.net mvc路由篇 如何找到 IHttpHandler方法介紹
學(xué)習(xí)是使用asp.net已經(jīng)有很長(zhǎng)一段時(shí)間了,現(xiàn)在就來(lái)分析一下mvc的整過(guò)過(guò)程吧。個(gè)人計(jì)劃寫一個(gè)mvc系列的博文,僅從源代碼的角度來(lái)分析mvc。在接觸mvc時(shí)我們一定會(huì)經(jīng)歷路由,那么路由這東東是怎么搞出來(lái)的啊2012-11-11使用.NET6實(shí)現(xiàn)動(dòng)態(tài)API
本文詳細(xì)講解了使用.NET6實(shí)現(xiàn)動(dòng)態(tài)API,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12ASP.NET Core MVC 依賴注入View與Controller
本文重點(diǎn)給大家介紹的是ASP.NET Core MVC 之依賴注入 View 和ASP.NET Core MVC 之依賴注入 Controller的相關(guān)資料,需要的小伙伴可以參考下面文章具體內(nèi)容2021-09-09詳解如何使用Net將HTML簡(jiǎn)歷導(dǎo)出為PDF格式
這篇文章主要為大家介紹了詳解如何使用Net將HTML簡(jiǎn)歷導(dǎo)出為PDF格式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03