c#任务功能签名

时间:2018-10-01 22:44:31

标签: c# task

我不确定何时使用两种不同的方法来声明任务方法。如果我有赌博功能:

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课程,您是否至少可以将我指出正确的方向?

0 个答案:

没有答案