Я понимаю, что вызов ConfigureAwait (false) в ожидаемой задаче иногда имеет преимущество в производительности, поскольку он предотвращает ненужное возвращение к исходному SynchroniZationContext.Действительно ли Task.ConfigureAwait (false) в последней строке метода влияет на что-либо?
Например:
async Task Something()
{
// Let's say I'm on the UI context
//...
await AnotherTask.ConfigureAwait(false);
// Code here is no longer running on the UI context.
// It runs in a thread pool synchronization context (i.e. null).
}
Мой вопрос заключается в следующем: Если вызов задачи находится на последней строке метода, и мы пропускаем ConfigureAwait (ложь), это компилятор достаточно умен, чтобы предотвратить ненужное вернуться к исходному контексту?
async Task Something()
{
// Let's say I'm on the UI context
//...
await AnotherTask; // Dropped -> .ConfigureAwait(false);
}
Будет ли исполнения пенальти или потенциала тупикового можно здесь, несмотря на то, что нет ничего в методе после вызова ЖДЕТ?
Спасибо, Стивен за ваш четкий и точный ответ. Я также просто купил ваш Concurrency в C# Cookbook от Amazon, чтобы уточнить мои знания :) – Paymon
Могу ли я пригласить вас также на этот вопрос :) http://stackoverflow.com/questions/41908593/is-there-any-way -в-см-в-полный стек-след-через-несколько-потоков? noredirect = 1 # comment70998869_41908593 – Paymon