我想调用一个简单的方法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
执行相同操作?