Как я могу передать аргументы на сервер во время оплаты PayPal?

Вы не можете вернуть задачу, если сам метод объявлен как async - поэтому это не будет работать, например:

async Task BarAsync()
{
    return BazAsync(); // Invalid!
}

Для этого потребуется тип возврата Task<Task>.

Если ваш метод просто выполняет небольшой объем работы, а затем вызывает только один асинхронный метод, тогда ваш первый вариант в порядке, и означает, что есть еще одна задача. Вы должны знать, что любые исключения, возникающие в вашем синхронном методе , будут доставлены синхронно, хотя, действительно, именно так я предпочитаю обрабатывать аргументы.

Это также общий шаблон для внедрение перегрузки, например маркером отмены.

Просто имейте в виду, что если вам нужно перейти на ожидание чего-то другого, вам нужно сделать его асинхронным. Например:

// Version 1:
Task BarAsync()
{
    // No need to gronkle yet...
    return BazAsync();
}

// Oops, for version 2 I need to do some more work...
async Task BarAsync()
{
    int gronkle = await GronkleAsync();
    // Do something with gronkle

    // Now we have to await BazAsync as we're now in an async method
    await BazAsync();
}
0
задан vidur punj 17 January 2019 в 09:32
поделиться