ID | Asunto | Fecha | Nick | |
57766 | Problema control otro formulario desde proceso asincrono | 21/10/14 18:18 | jjthetower | | |
Buenos días a todos,
Estoy realizando una aplicación de Visual basic .net con un proceso asíncrono con el complemento BackgroundWorker. El problema es cuando el proceso asíncrono llama a otro proceso que esta en otro código distinto al del formulario y este cambia algún control o activeX del formulario. Al suceder esto se produce un error de InvalidOperationException.
El error es: Error al crear el formulario. Consulte Exception.InnerException para obtener mas detalles. Error:No se puede crear una instancia del control ActiveX '7879879-33232-332-333' porque el subproceso actual no está en un apartamento de un solo proceso.
No se como se adjuntan imágenes sino os enseñaría una imagen con el error.
A ver que me recomendáis
Saludos. |
|
ID | Asunto | Fecha | Nick | |
57767 | Re: Problema control otro formulario desde proceso asincrono (Resp: 57766) | 22/10/14 13:48 | Pipe[hgjfkdls] | | |
Buen día, Te comento que para realizar cambios en controles es necesario realizarlo desde el hilo principal de la aplicación. ¿Cómo?, pues de la clase principal “Control”, de la cual se derivan los controles de .NET, se hereda un método llamado “BeginInvoke” al cual pasamos un delegado el cual se ejecuta de forma asincrónica en el subproceso donde identificador subyacente del control donde se creó. En términos simples, el delegado pasado al método se ejecuta en el hilo principal (siempre y cuando el control se haya creado en aquel hilo). Saludos, Pipe [hgjfkdls]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
ID | Asunto | Fecha | Nick | |
57769 | Re: Problema control otro formulario desde proceso asincrono (Resp: 57767) | 27/10/14 18:21 | jjthetower | | |
Muchas gracias Pipe, Finalmente decidí poner el procedimiento ejecutado por el Backgroundworker en el formulario en el que se había creado el control y todo solucionado. Eso si, me hubiera gustado poder haberlo puesto en un archivo de código independiente para tenerlo todo mas organizado. En fin...
Muchas gracias.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |