2008-10-22 9 views
7

Estoy creando un dll C#, que otros desarrolladores usarán en WinForms. Por alguna razón, deseo detectar si los métodos de esta biblioteca se llaman desde el hilo principal (GUI) y advertir al desarrollador que ha hecho algo así (es decir, en el archivo de registro). ¿Hay alguna forma razonable de detectar el método de llamada desde el hilo principal? Recuerde que no tengo acceso a la aplicación WinForm.Detectando ejecutarse en el hilo principal en la biblioteca C#

Respuesta

17

Una solución fácil en este caso es declarar un control estático en el conjunto de la biblioteca que se crea en la hebra de la IU principal. Si desea detectar si la biblioteca se llama desde el hilo principal, a continuación, utilizar la siguiente

if (MyLibraryControl.InvokeRequired) 
    //do your thing here 
+1

Esto debe marcarse como la respuesta correcta para la pregunta. –

2

La opción más simple (si tiene una forma/práctico control) es comprobar InvokeRequired.

En caso de que no sea así, puede intentar usar SynchronizationContext para simular una publicación o enviar, ¿qué hilo está pasando? Al llamar a Enviar o Enviar se cambiará al subproceso de interfaz de usuario.

Cuestiones relacionadas