将 Action<> 传递给异步方法

Passing Action<> into Async Method

我在异步方法中了解到 outref 不能使用。但我不清楚使用 Action (或代表)的后果。虽然我认识到在 Action 中设置的值在等待之后可能不可用,但下面还有其他问题吗?他们的线程问题?我已经对此进行了广泛的搜索,但无法在任何地方找到清晰的信息。

protected async Task<gPeriod> MapPeriod(string value, Action<int> setOutput)
{
    (...) //omitted code
    int x = await MyMethodAsync(value)
    setOutput(x);
    return gPeriod;  //calculation of this not shown in this example
}

当您总是 await 一项任务时,从程序员的角度来看,代码的工作方式非常接近于同步代码。但是当你开始做这样的事情时

var task1 = FooAsync(setOutput);
var task2 = BarAsync(setOutput);
var result1 = await task1;
var result2 = await task2;

事情开始变得有趣,因为无法保证它们完成的顺序或它们使用的线程。

无论如何你的代码没问题。