¿Cómo detectar si estamos en un hilo de interfaz de usuario?

Por el bien del argumento, considere un subproceso de interfaz de usuario como un subproceso que ha recibido una llamada aApplication.Run() o una de sus sobrecargas llamadas en él y tiene un bucle de mensajes activo en ejecución.

¿Hay alguna forma de detectar si actualmente estamos ejecutando en ese hilo?

La razón por la que quiero esto es porque tengo una clase con una función privada que es de larga duración. La clase en sí ya está multiproceso, y el uso de esta clase es tal que puede usarse desde la interfaz de usuario o desde los subprocesos en segundo plano que realizan el procesamiento. Esta función también cae dentro de esta red. Pero no quiero que bloquee el hilo de la interfaz de usuario. Así que quiero detectar si estoy ejecutando en un subproceso de interfaz de usuario y, si es así, bifurcar la llamada de función en un subproceso de fondo (probablementeThreadPool, pero eso no es un problema para esta discusión). Esto se comporta completamente bien, pero los subprocesos de fondo probablemente dependen de la salida de la función, por lo que el bloqueo para ellos es mejor, mientras que el subproceso de la interfaz de usuario está accediendo a él de una manera más "establecer y olvidar".

Respuestas a la pregunta(4)

Su respuesta a la pregunta