c# - La evaluación requiere un hilo para ejecutar temporalmente. Use la ventana de observación para realizar la evaluación
exception-handling thread-exceptions (5)
Estoy completamente atascado . Estoy probando la API de MetaTrader y obtengo el siguiente error cuando intento ejecutar un método en la ventana Inmediato de VS 2010:
Se produjo una excepción de primera oportunidad del tipo ''System.Threading.ThreadAbortException'' en mscorlib.dll
Se produjo una primera excepción de tipo ''System.Threading.ThreadAbortException'' en System.Runtime.Remoting.dll
La evaluación requiere un hilo para ejecutar temporalmente. Use la ventana de observación para realizar la evaluación.
Qué significa eso? ¿Puede suceder debido a la diferencia de versiones de tiempo de ejecución (api 2.0, aplicación 4.0)?
Creo que ese error significa que el método que está intentando ejecutar está generando un hilo. Sin embargo, dado que el programa está en modo Break, no se puede ejecutar. Para evitar un interbloqueo (donde el método esperará para siempre un subproceso que no se ejecutará), Visual Studio elimina cualquier subproceso generado.
Mi sugerencia es mover la llamada al programa y usar otros medios para ejecutarla.
Esto se debe a que el servidor se ejecuta bajo .NET 2.0 y un cliente (a través de .NET Remoting), bajo .NET 4.0.
Cambiar el cliente a .NET 2.0 / 3.5 solucionó el problema.
no elimine app.config, que contendrá información de la siguiente manera:
<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>
Creo que el método que está llamando a través de la ventana Inmediato termina llamando a Debugger.NotifyOfCrossThreadDependency . Este método solo se introdujo en .NET 4.0, por lo que tiene sentido que el problema no se reproduzca solo cuando se utiliza una versión anterior del tiempo de ejecución. Esta publicación de blog explica NotifyOfCrossThreadDependency
en detalle, pero la esencia de esto es que hace que la ventana NotifyOfCrossThreadDependency
muestre un botón Actualizar que debe presionarse antes de que se realice la evaluación. Sin embargo, si se evalúa a través de la ventana Inmediato, se obtiene el error "La evaluación requiere una secuencia para ejecutarse temporalmente. Use la ventana de vigilancia para realizar la evaluación ".
Aquí hay una propiedad de ejemplo que reproduce este error:
public int CauseError
{
get
{
Debugger.NotifyOfCrossThreadDependency();
return 5;
}
}
Cierre su VS y reconstruya su aplicación. Lo ayudará.