檢索其值我有方法返回一些數據類型方法在單獨的線程中運行 - 如何調用線程
MyType MyMethod()
如果我遇到這種方法成一個單獨的線程,這怎麼能返回類型檢索在調用線程(調用其他線程執行MyMethod)?
檢索其值我有方法返回一些數據類型方法在單獨的線程中運行 - 如何調用線程
MyType MyMethod()
如果我遇到這種方法成一個單獨的線程,這怎麼能返回類型檢索在調用線程(調用其他線程執行MyMethod)?
也許最簡單的是讓兩個線程都從同一個靜態變量讀取/寫入。
這個線程,而稍有不同,也有一些想法:How to share data between different threads In C# using AOP?
有很多方法可以做到這一點,這裏有一個:
Func<MyType> func = MyMethod;
func.BeginInvoke(ar =>
{
MyType result = (MyType)func.EndInvoke(ar);
// Do something useful with result
...
},
null);
下面是另一個,使用Task
API:
Task.Factory
.StartNew(new Func<MyType>(MyMethod))
.ContinueWith(task =>
{
MyType result = task.Result;
// Do something useful with result
...
});
最後一個,使用異步CTP(C#5的預覽版):
MyType result = await Task.Factory.StartNew<MyType>(MyMethod);
// Do something useful with result
...
我認爲IAsyncResult模式是你最好的選擇。你可以找到更多的細節here。
我建議在.Net 4中使用Task路由。它是運行併發進程的更新,更簡單的方法。與許多.Net 3+的「支柱」一樣,重點在於使代碼更具說明性,描述*它想要什麼,並將* how *的細節留給框架。 – Mel 2011-05-12 13:45:29