方法在单独的线程中运行 - 如何在调用线程中检索其值

时间:2011-05-11 21:42:18

标签: c# winforms multithreading

我有返回某些数据类型的方法

MyType MyMethod()

如果我将此方法运行到一个单独的线程中,如何在调用线程中调用此返回类型(调用执行MyMethod的其他线程)?

3 个答案:

答案 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?