c# - Excepción no controlada del tipo ''System.ApplicationException'' ocurrió en System.Drawing.dll
winforms visual-studio (3)
Intente agregar un punto de interrupción de excepción y VS se detendrá en la instrucción que causa la excepción. El apilamiento real puede ayudar.
¿Has intentado cerrar la ventana de vigilancia de la variable local de VS? ¡Tal vez se esté evaluando algo para Usted en los componentes de la IU donde el subproceso de acceso debería ser igual al subproceso propietario del componente de la IU!
Tengo una aplicación de Winforms. En el modo de desarrollo, al depurar de Visual Studio .NET 2003 (Sí, sé que es antiguo, pero este es un proyecto heredado), aparece este error cuando intento abrir un nuevo formulario. Para abrir un nuevo formulario, obtengo una instancia del formulario y luego llamo al método ShowDialog (), por ejemplo:
frmTest test = new frmTest(here my parameters);
test.ShowDialog();
Si presiono F11 (entrar en) al momento de la depuración, no se bloquea, pero si en la línea donde instancia el formulario, presiono F10 para pasar a la siguiente línea, es decir, test.ShowDialog (), luego falla al mostrar este error.
El error completo del mensaje es:
"Se produjo una excepción no controlada del tipo ''System.ApplicationException'' en System.drawing.dll. Información adicional: Se intentó liberar una exclusión mutua que no pertenece al proceso".
He traducido la última parte: Información adicional ... desde que apareció en español.
La forma que estoy creando con parámetros, su constructor, consiste en inicializar algunas variables, por ejemplo:
public frmTest(string param1, string param2)
{
InitializeComponent();
this.param1 = param1;
this.param2 = param2;
}
private void frmTest_Load(object sender, EventArgs e)
{
// here I call a remote webservice asynchronously.
}
También mi formulario "frmTest" tiene cuatro cajas de imágenes, una etiqueta y un botón. Tres de las pictureboxes contienen una imagen png (se asigna en tiempo de diseño a través de la propiedad Image), la última picturebox contiene un gif animado, también cargado en tiempo de diseño a través de la propiedad Image. Tal vez el error se produce debido a estas imágenes?
Las excepciones de aplicación no son lanzadas por el propio framework: what-is-applicationexception-for-in-net ; El problema debe estar en el código que no tiene el marco. También asegúrese de verificar la propiedad "InvokeRequired" antes de realizar la acción y, si es así, ejecute el método utilizando el método "Invoke". Se puede verificar el c-sharp-cross-thread-call-problem de la c-sharp-cross-thread-call-problem .
Puede ser que la llamada asíncrona esté intentando acceder al subproceso de la interfaz de usuario.
Asegúrese de que no está utilizando propiedades de control como TextBox.Text
. Si es así, solo tiene que pasar su valor a la llamada asíncrona, o almacenarlo en una variable de clase antes de la llamada.
Además, dentro de una llamada asíncrona no puede asignar valores a esas propiedades. Utilice Invoke()
lugar.