检索其值我有方法返回一些数据类型方法在单独的线程中运行 - 如何调用线程
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