Visual Studio和MSSE防病毒编译时错误

我的VS2013 Ultimate副本将此代码编译60秒以上:

class Program { static void Main(string[] args) { double dichotomy = Dichotomy( d => { try { int size = (int) d; byte[] b = new byte[size]; return -b.Length; } catch (Exception) { return 0; } }, 0, int.MaxValue, 1); Console.WriteLine(dichotomy); Console.ReadKey(); } private static double Dichotomy( Func func, double a, double b, double epsilon) { double delta = epsilon / 10; while (b - a >= epsilon) { double middle = (a + b) / 2; double lambda = middle - delta, mu = middle + delta; if (func(lambda) < func(mu)) b = mu; else a = lambda; } return (a + b) / 2; } } 

但是如果我用int替换double ,它会立即编译。 怎么能解释……?

我责备,在我的机器上27秒。 恶魔是MsMpEng.exe,它长时间燃烧100%的核心。 在任务管理器的“进程”选项卡中很容易看到。

这是Windows Defender服务,实际执行恶意软件扫描的服务。 通过取消“打开实时保护”选项来禁用它可以立即修复延迟。 那么将我存储项目的路径添加到“Excluded files locations”框中,可能是您首选的方法。

我不得不猜测潜在的原因,但不得不假设您的源代码触发了恶意软件规则。 不是很好的解释,当我将.NET版本<4.0时,我没有看到延迟。 好的,我放弃了:)