执行时不进行调试,代码如下:
bool success = cache.Add(cacheKey, ips, policy);
if (success)
{
}
ret = cache[cacheKey] as Dictionary<string, Threat>;
按预期工作,ret包含值,每个人都很开心。 但是当在visual studio调试器中执行时,成功是正确的,但ret是null。
我发现this article说它是.Net4.0中的一个错误,在4.5中修复,我使用的是4.61但我仍然受到影响。
在文章中,他们提出了一个解决方法(对于那些被迫使用4.0的人),它实际上解决了这个问题:
using (ExecutionContext.SuppressFlow()) {
// Create memory cache instance under disabled execution context flow
return new YourCacheThing.GeneralMemoryCache(…);
}
但in this msdn blog他们发帖说,不要使用ExecutionContext.SuppressFlow
,这很糟糕。
所以我很担心使用这种解决方法,特别是因为我不明白为什么我首先需要它,因为从Net4.5开始应该修复bug。