the - ui thread c#
BackgroundWorker RunWorkerCompleted Event (1)
Mi aplicación C # tiene varios trabajadores de fondo. A veces, un trabajador de fondo despedirá a otro. Cuando se completa el primer trabajador de fondo y se RunWorkerCompleted
evento RunWorkerCompleted
, ¿en qué hilo se RunWorkerCompleted
ese evento, la interfaz de usuario o el primer trabajador de fondo del que se llamó a RunWorkerAsync
? Estoy usando Microsoft Visual C # 2008 Express Edition. Cualquier pensamiento o sugerencia que pueda tener será apreciado. Gracias.
Si el BackgroundWorker
se creó a partir del subproceso UI, entonces el evento RunWorkerCompleted
también se generará en el subproceso UI.
Si se creó a partir de un hilo de fondo, el evento se generará en un hilo de fondo indefinido (no necesariamente el mismo hilo, a menos que esté utilizando un SynchronizationContext
personalizado).
Curiosamente, esto no parece estar bien documentado en MSDN. La mejor referencia que pude encontrar estaba here :
La forma preferida de implementar multihilo en su aplicación es usar el componente BackgroundWorker . El componente BackgroundWorker usa un modelo basado en eventos para multihilo. El hilo de fondo ejecuta su controlador de eventos DoWork , y el hilo que crea los controles ejecuta los controladores de eventos ProgressChanged y RunWorkerCompleted . Puede llamar a sus controles desde sus controladores de eventos ProgressChanged y RunWorkerCompleted .