aba*_*hev 12 c# exception-handling thread-exceptions metatrader4
我完全卡住了.我正在测试MetaTrader API并在尝试在VS 2010的立即窗口中运行方法时获取下一个错误:
mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
System.Runtime.Remoting.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
评估需要一个线程暂时运行.使用"监视"窗口执行评估.
这是什么意思?是否会因运行时版本的差异而发生(api 2.0,app 4.0)?
我相信你通过立即窗口调用的方法最终调用Debugger.NotifyOfCrossThreadDependency.此方法仅在.NET 4.0中引入,因此在使用较旧版本的运行时时,问题不会重现.这篇博文NotifyOfCrossThreadDependency详细解释了,但它的要点是它使Watch窗口显示一个刷新按钮,必须在评估发生之前按下该按钮.如果是通过即时窗口评价,不过,你得到的" 评估需要一个线程来临时运行.使用监视窗口来进行评价 "的错误.
这是一个重现此错误的示例属性:
public int CauseError
{
get
{
Debugger.NotifyOfCrossThreadDependency();
return 5;
}
}
Run Code Online (Sandbox Code Playgroud)
我相信错误意味着您尝试执行的方法正在产生一个线程.但是,由于程序处于Break模式,因此无法运行.为了避免死锁(方法将永远等待一个不会运行的线程),Visual Studio会杀死所有生成的线程.
我的建议是将调用移动到程序中,并使用其他方法来执行它.
这是因为服务器在 .NET 2.0 下运行,而客户端(通过 .NET Remoting)在 .NET 4.0 下运行。
将客户端切换到 .NET 2.0/3.5 解决了该问题。
| 归档时间: |
|
| 查看次数: |
14418 次 |
| 最近记录: |