根据我所阅读的所有内容,以下测试方法应该通过。我正在尝试理解为什么它失败了。私有异步方法中的第一个assert按预期通过。然而,一旦任务被返回并等待,当检索时在CallContext中设置的值现在为null。
[TestMethod]
public void LogicalCallContextBlockingTest()
{
PerformSimpleAsyncWork().Wait();
var result = CallContext.LogicalGetData("test");
Assert.AreEqual(result, "expected");
}
private async Task PerformSimpleAsyncWork()
{
await Task.Run(() =>
{
System.Threading.Thread.Sleep(100);
CallContext.LogicalSetData("test", "expected");
var result = CallContext.LogicalGetData("test");
Assert.AreEqual(result, "expected");
});
}