如何将BeginInvoke中的方法结果传递给AsyncCallback?

时间:2015-09-27 10:05:38

标签: c# .net multithreading asynchronous callback

我想调用一个简单的方法asynchronously,并将输出/结果传递给AsyncCallback方法。 (我已经检查了 SO中其他相关帖子,他们建议我的代码中的第二种方法,我不想因某些原因使用它)

这样做的正确方法是什么?我知道还有其他方法可以实现,例如Task,但我只是试图让现有代码使用BeginInvoke异步调用。

以更简单的形式,让我们说这是我要调用的方法

static int ProcessData(int i)
{
    //do something with i
    return ++i;
}

目前,我正在使用AsyncCallback

异步调用它
//here I want to pass the result from ProcessData() to postProcess
Func<int, int> method = ProcessData;
AsyncCallback postProcess = iar => Console.WriteLine("ProcessData completed!"); 
method.BeginInvoke(99, postProcess, null);

同样,我知道我可以使用EndInvoke来获得这样的结果

var asyncResult = method.BeginInvoke(99, null, null);
var processedData = method.EndInvoke(asyncResult);
Console.WriteLine("ProcessData returned value : " + processedData);

此代码有效,我在异步调用结束时得到结果,但有没有办法对AsyncCallback执行相同操作?

0 个答案:

没有答案