2011-05-11 61 views

回答

3

有很多方法可以做到這一點,這裏有一個:

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 
... 
+0

我建議在.Net 4中使用Task路由。它是運行併發進程的更新,更簡單的方法。與許多.Net 3+的「支柱」一樣,重點在於使代碼更具說明性,描述*它想要什麼,並將* how *的細節留給框架。 – Mel 2011-05-12 13:45:29

1

我認爲IAsyncResult模式是你最好的選擇。你可以找到更多的細節here

相關問題