评估需要一个线程暂时运行。 使用“监视”窗口执行评估

我完全卡住了 。 我正在测试MetaTrader API并在尝试在VS 2010的立即窗口中运行方法时获取下一个错误:

mscorlib.dll中出现’System.Threading.ThreadAbortException’类型的第一次机会exception

System.Runtime.Remoting.dll中出现’System.Threading.ThreadAbortException’类型的第一次机会exception

评估需要一个线程暂时运行。 使用“监视”窗口执行评估。

这是什么意思? 是否会因运行时版本的差异而发生(api 2.0,app 4.0)?

我相信你通过立即窗口调用的方法最终调用Debugger.NotifyOfCrossThreadDependency 。 此方法仅在.NET 4.0中引入,因此在使用较旧版本的运行时时,问题不会重现。 这篇博文详细解释了NotifyOfCrossThreadDependency ,但其要点是它使Watch窗口显示一个刷新按钮,必须在评估发生之前按下该按钮。 但是,如果通过立即窗口进行评估,则会得到“ 评估需要临时运行的线程。使用”监视“窗口执行评估 ”错误。

这是一个重现此错误的示例属性:

  public int CauseError { get { Debugger.NotifyOfCrossThreadDependency(); return 5; } } 

我相信错误意味着您尝试执行的方法正在产生一个线程。 但是,由于程序处于Break模式,因此无法运行。 为了避免死锁(方法将永远等待不能运行的线程),Visual Studio会杀死任何生成的线程。

我的建议是将调用移动到程序中,并使用其他方法来执行它。

那是因为服务器在.NET 2.0和客户端(通过.NET Remoting)下运行 – 在.NET 4.0下。

将客户端切换到.NET 2.0 / 3.5解决了这个问题。

不要删除app.config,其中包含如下信息:

    

关闭你的VS并重建你的应用程序它会帮助你。