我有返回某些数据类型的方法
MyType MyMethod()
如果我将此方法运行到一个单独的线程中,如何在调用线程中调用此返回类型(调用执行MyMethod的其他线程)?
答案 0 :(得分: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
...
});
最后一个,使用Async CTP(C#5预览):
MyType result = await Task.Factory.StartNew<MyType>(MyMethod);
// Do something useful with result
...
答案 1 :(得分:1)
我认为IAsyncResult模式是你最好的选择。您可以找到更多详细信息here。
答案 2 :(得分:0)
最简单的方法是让两个线程都读/写同一个静态变量。
这个帖子虽然略有不同,但也有一些想法:How to share data between different threads In C# using AOP?