Я ищу рабочие теории, потому что я ничего не понимаю.
Насколько мне известно в .NET Core, ConfigureAwait(false)
не имеет отношения к . Однако у меня есть блок кода, который зависает в Manjuro Linux, если я не использую ConfigureAwait(false)
. Он не зависает ни в Ubuntu, ни в Windows.
Окружающая среда
dotnet --version
дает 2.1.401
К вашему сведению: Manjuro Linux базируется на Arch Linux (так что, вероятно, на Arch он тоже не работает).
Контекст
Соответствующий кодовый блок на GitHub: https://github.com/zkSNACKs/WalletWasabi/pull/636/files#r213737187
await Task.Delay(1000).ConfigureAwait(false);
Я вызываю эту задержку перед тем, как запустить внешний процесс, а затем, после задержки, другая ожидаемая асинхронная функция пытается установить соединение с этим процессом (через SOCKS5), чтобы проверить, правильно ли он был запущен: if (!await IsTorRunningAsync(TorSocks5EndPoint))
.
Наконец, я вызываю эту функцию из теста xUnit с dotnet test
.
Вопрос
Есть теория о том, почему такое могло произойти?