Поток тупиков в методе, но не прямой кодC#

Место общения программистов C#
Ответить
Anonymous
 Поток тупиков в методе, но не прямой код

Сообщение Anonymous »

У меня есть приложение WPF. Я должен использовать .getawaiter (). GetResult () в некоторых моментах, потому что мое приложение является добавлением в другое приложение. Родитель имеет синхронизированные вызовы в мой код, и мой код имеет как можно высокий асинхрон. В любом случае, чтобы сказать, что я знаю, что это не лучшая практика, но я не контролирую это и должен использовать его в качестве обходного пути. В одном месте у меня есть этот код: < /p>
var collaborationsUser = Task.Run(async () =>
await MyAsyncMethod().ConfigureAwait(false))
.GetAwaiter().GetResult();
< /code>
Это работает без поток. Я попытался инкапсулировать это, чтобы я мог использовать его последовательно, где это необходимо, и создавал подобный вспомогательный метод: < /p>
public static T RunTaskToAvoidDeadlock(Task task) =>
Task.Run(async () => await task.ConfigureAwait(false)).GetAwaiter().GetResult();
< /code>
, который я называю этим: < /p>
var collaborationsUser = TaskUtilities.RunTaskToAvoidDeadlock(MyAsyncMethod());
< /code>
Однако, когда я это делаю, это тупики ... почему этот код отличается? Насколько я вижу, я вообще не меняю потоки, я просто передаю задачу вспомогательному методу.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... irect-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»