我正在使用逻辑调用上下文将信息沿着一系列的await流动。有趣的是,在我的测试控制台应用程序中,一切都运作良好。然而,在VS UnitTest的上下文中运行我的单元测试时,调用上下文似乎不能在await之间流动。
在方法SendRequestAsyncImpl内部,设置了调用上下文,当我在方法返回时的断点处查询逻辑调用上下文时,调用上下文被正确设置了。
但是,在以下代码行中的await返回后:
在方法SendRequestAsyncImpl内部,设置了调用上下文,当我在方法返回时的断点处查询逻辑调用上下文时,调用上下文被正确设置了。
但是,在以下代码行中的await返回后:
Message response = await SendRequestAsyncImpl(m, true).ConfigureAwait(false);
逻辑调用上下文为空。我认为通过将ConfigureAwait(true)而不是false进行设置,问题可能会得到解决。但这并不能解决问题。
无论我尝试流动什么,甚至在SendRequestAsyncImpl中设置一个简单的值类型,例如:
System.Runtime.Remoting.Messaging.CallContext.LogicalSetData("flag", true);
在等待之后无法检索到。
为什么从我的控制台应用程序可以工作,但是从我的单元测试中不行?有什么不同之处吗?(我看到其他一些stackoverflow问题涉及AppDomain问题。但是我甚至不能跨等待传递一个bool。似乎在这里问题并不是能否传递数据的能力。)
await Task.Delay(100);
,那么它是否会顺利执行? - Stephen Clearyawait
点,但不会流出。 - Stephen Cleary