Я использую Logical CallContext для передачи информации обратно через серию ожиданий. Интересно, что в моем тестовом консольном приложении все работает нормально. Однако при запуске моего модульного теста в контексте VS UnitTest контекст вызова, похоже, не проходит через ожидания.
Внутри метода: SendRequestAsyncImpl устанавливается контекст вызова, и когда я запрашиваю контекст логического вызова из точки останова в момент возврата метода, контекст вызова устанавливается просто отлично.
Однако после того, как ожидание возвращается в строке ниже:
Message response = await SendRequestAsyncImpl(m, true).ConfigureAwait(false);
Контекст логического вызова пуст. Я подумал, что проблема может быть решена установкой ConfigureAwait(true), а не false. Но это не решает проблему.
Неважно, что я пытаюсь передать, даже устанавливая простой тип значения внутри SendRequestAsyncImpl, например:
System.Runtime.Remoting.Messaging.CallContext.LogicalSetData("flag", true);
не может быть получен после ожидания.
Почему это работает из моего консольного приложения? Но не из моего модульного теста? Что изменилось? (Я видел некоторые другие вопросы о переполнении стека, которые относятся к проблемам AppDomain. Но я даже не могу маршалировать bool через await. Возможность маршалировать данные здесь не проблема.)
await Task.Delay(100);
, тогда он будет течь? - person Stephen Cleary   schedule 12.02.2016await
точек, но не будет выходить. - person Stephen Cleary   schedule 12.02.2016