我不确定何时使用两种不同的方法来声明任务方法。如果我有赌博功能:
public async Task Gamble()
{
WarnUserOfStupidity();
await GoBankruptAsync();
Console.WriteLine("I told you so!");
}
有两种编写GoBankruptAsync函数的方法。我可能错误的假设是,如果要包装在任务中的所有代码都是同步的,那么我会写:
public Task GoBankruptAsync()
{
return Task.Run(() =>
{
decimal price = CheckPennyStockPrice();
decimal cash = CheckLifeSavingsBalance();
int shares = (int)Math.Floor(cash / price);
SpendLifeSavingsOnPennyStock(shares);
Cry();
}).ConfigureAwait(false);
}
但是,如果某些内部代码已经包装在一个任务中(例如,第三方库),那么我可能错误的假设是我会写:
public async Task GoBankruptAsync()
{
decimal price = await CheckPennyStockPriceAsync();
decimal cash = await CheckLifeSavingsBalanceAsync();
int shares = (int)Math.Floor(cash / price);
await Task.Run(() =>
{
SpendLifeSavingsOnPennyStock(shares);
Cry();
}).ConfigureAwait(false);
}
我在这里正确吗?
此外,我知道这被标记为重复项,并且相信您,但是我想我只是没有使用正确的搜索词。因此,如果您不想给我完整的编程102课程,您是否至少可以将我指出正确的方向?