2011-05-11 63 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

相关问题