15

私は完全に立ち往生しています。MetaTrader APIをテストしていて、VS 2010 のイミディエイト ウィンドウでメソッドを実行しようとすると、次のエラーが発生します。

タイプ 'System.Threading.ThreadAbortException' の初回例外が mscorlib.dll で発生しました

タイプ 'System.Threading.ThreadAbortException' の初回例外が System.Runtime.Remoting.dll で発生しました

評価には、スレッドを一時的に実行する必要があります。ウォッチ ウィンドウを使用して評価を実行します。

どういう意味ですか?ランタイム バージョンの違い (api 2.0、アプリ 4.0) が原因で発生する可能性はありますか?

4

4 に答える 4

7

イミディエイト ウィンドウから呼び出しているメソッドは、最終的にDebugger.NotifyOfCrossThreadDependencyを呼び出すと思います。このメソッドは .NET 4.0 でのみ導入されたため、古いバージョンのランタイムを使用すると問題が再現されないことは理にかなっています。このブログ投稿で詳しく説明NotifyOfCrossThreadDependencyしていますが、その要点は、評価が行われる前に押す必要がある [更新] ボタンが [ウォッチ] ウィンドウに表示されることです。ただし、イミディエイト ウィンドウで評価すると、「評価にはスレッドを一時的に実行する必要があります。ウォッチ ウィンドウを使用して評価を実行します」というエラーが表示されます。

このエラーを再現するプロパティの例を次に示します。

    public int CauseError
    {
        get 
        {                
            Debugger.NotifyOfCrossThreadDependency();
            return 5;
        }
    }
于 2013-12-08T13:37:21.670 に答える
6

エラーは、実行しようとしているメソッドがスレッドを生成していることを意味すると思います。ただし、プログラムはブレーク モードであるため、実行できません。デッドロック (実行されないスレッドをメソッドが永久に待機する) を回避するために、Visual Studio は生成されたスレッドをすべて強制終了します。

私の提案は、呼び出しをプログラムに移動し、他の手段を使用して実行することです。

于 2010-11-25T21:12:45.457 に答える
0

これは、サーバーが .NET 2.0 で実行され、クライアントが (.NET Remoting を介して) .NET 4.0 で実行されているためです。

クライアントを .NET 2.0/3.5 に切り替えると、問題が解決しました。

于 2011-02-10T10:37:35.950 に答える
-1

次のような情報を含む 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>
于 2011-10-30T09:52:18.543 に答える