代码之家  ›  专栏  ›  技术社区  ›  abatishchev Karl Johan

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

  •  11
  • abatishchev Karl Johan  · 技术社区  · 14 年前

    我是 completely stuck . 我在测试 MetaTrader API 以及在VS2010的即时窗口中尝试运行方法时出现下一个错误:

    mscorlib.dll中出现“System.Threading.ThreadAbortException”类型的首次机会异常

    System.Runtime.Remoting.dll中出现“System.Threading.ThreadAbortException”类型的首次机会异常

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

    这是什么意思?是否会因为运行时版本不同(api 2.0、app 4.0)而发生这种情况?

    4 回复  |  直到 14 年前
        1
  •  7
  •   Omer Raviv    11 年前

    我相信你通过即时窗口调用的方法最终会调用 Debugger.NotifyOfCrossThreadDependency . 此方法仅在.NET4.0中引入,因此在使用较旧版本的运行时时,问题不会自行重现是有意义的。 This blog post 解释 NotifyOfCrossThreadDependency 详细地说,但它的要点是,它使手表窗口显示一个刷新按钮,必须按下该按钮才能进行评估。不过,如果是通过即时窗口计算的,则会得到“ 评估需要一个线程临时运行。使用“监视”窗口执行评估 “错误。

    下面是复制此错误的示例属性:

        public int CauseError
        {
            get 
            {                
                Debugger.NotifyOfCrossThreadDependency();
                return 5;
            }
        }
    
        2
  •  6
  •   Mike Caron    14 年前

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

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

        3
  •  0
  •   abatishchev Karl Johan    14 年前

    这是因为服务器运行在.NET 2.0下,而客户端(通过.NET Remoting)运行在.NET 4.0下。

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

        4
  •  -1
  •   Kevin    13 年前

    不要删除app.config,它将包含以下信息:

    <configuration>
      <configSections>
        <sectionGroup name="userSettings" 
                      type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
          <section 
                   name="MySolution.Properties.Settings"
                   type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                   allowExeDefinition="MachineToLocalUser" 
                   requirePermission="false" />
        </sectionGroup>
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      </startup>
    </configuration>