Оценка требует, чтобы поток работал временно. Используйте окно Watch, чтобы выполнить оценку - PullRequest
11 голосов
/ 25 ноября 2010

Я полностью застрял . Я тестирую MetaTrader API и получаю следующую ошибку при попытке запустить метод в Immediate Window VS 2010:

Первое случайное исключение типа «System.Threading.ThreadAbortException» произошло в mscorlib.dll

Первое случайное исключение типа «System.Threading.ThreadAbortException» произошло в System.Runtime.Remoting.dll

Для оценки требуется временно запустить поток. Используйте окно Watch для выполнения оценки.

Что это значит? Может ли это произойти из-за разницы во времени выполнения (api 2.0, app 4.0)?

Ответы [ 4 ]

7 голосов
/ 08 декабря 2013

Я считаю, что метод, который вы вызываете через Immediate Window, в итоге вызывает Debugger.NotifyOfCrossThreadDependency .Этот метод был введен только в .NET 4.0, поэтому имеет смысл, что проблема не будет воспроизводиться при использовании более старой версии среды выполнения. В этом блоге подробно объясняется NotifyOfCrossThreadDependency, но суть в том, что в окне просмотра отображается кнопка «Обновить», которую необходимо нажать до начала оценки.Однако, если он оценивается через Непосредственное окно, вы получаете сообщение « Оценка требует, чтобы поток был временно запущен. Используйте окно Наблюдения, чтобы выполнить оценку ».что воспроизводит эту ошибку:

    public int CauseError
    {
        get 
        {                
            Debugger.NotifyOfCrossThreadDependency();
            return 5;
        }
    }
6 голосов
/ 26 ноября 2010

Я считаю, что ошибка означает, что метод, который вы пытаетесь выполнить, порождает поток. Однако, поскольку программа находится в режиме Break, она не может быть запущена. Чтобы избежать тупика (когда метод будет ждать вечно неиспользуемый поток), Visual Studio убивает все порожденные потоки.

Я предлагаю переместить вызов в программу и использовать другие средства для его выполнения.

0 голосов
/ 30 октября 2011

не удаляйте 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>
0 голосов
/ 10 февраля 2011

Это потому, что сервер работает под .NET 2.0, а клиент (через .NET Remoting) - под .NET 4.0.

Переключение клиента на .NET 2.0 / 3.5 решило проблему.

...