Pregunta

He leído otra cuestión relacionada pero realmente no puedo conseguir que se relacionan con esto, así que pensé que era mejor pedir, oso Im bastante nuevo en WPF y así sucesivamente así que por favor conmigo.

Estoy utilizando esta API http://www.codeproject.com/KB/WPF/wpf_notifyicon.aspx al trabajo con la costumbre de WPF de Windows (en particular FancyBalloon).

Sin embargo, voy a ir a través de los siguientes problemas, que parecen incapaces de comenzar BalloonTips en un hilo separado (necesito esto porque estoy analizar mensajes de correo electrónico y por lo tanto si hay 3 mensajes de correo electrónico, por ejemplo, muestra el primer correo electrónico (que funciona bien), pero cuando se trata de la segunda correo electrónico se bloquea con un TargetInvocationException, { "elemento especificado ya es el niño lógica de otro elemento. Desconectar en primer lugar."}.

Lo que pasa es im supuestamente trabajando con la misma instancia y he intentado llamar a cerrarla antes, disponiendo que, etc, pero en vano. (Entonces de nuevo si deshacerse de él, no puedo crear otra instancia, ya que aparentemente los componentes de interfaz de usuario de WPF deben ser llamados desde un hilo estática por lo largo del bucle de mensajes de correo electrónico que muestra el globo +, estoy tratando de utilizar el mismo BalloonTip.

Cualquier sugerencia por favor? Estoy realmente en una pérdida aquí y he estado en ella durante bastante tiempo ahora: /

Me preguntaba si había alguien

¿Fue útil?

Solución

En general, los controles de WPF debe ser accedido y actualiza sólo en el hilo principal de interfaz de usuario. Hay controles de afinidad hilo por todas las vísceras que lanzará una excepción si se asigna a un conjunto de datos de propiedad con destino de cualquier hilo que no es el hilo de interfaz de usuario de WPF, por ejemplo, el enlace de datos.

Puede eliminar ya sea el código de interfaz de usuario de su subproceso de trabajo de fondo, o hacer un uso juicioso de un SynchronizationContext para invocar a sus antecedentes fragmentos de hilo de código a ejecutar en el subproceso de interfaz de usuario.

Si usted es nuevo en WPF o nuevo en el roscado, se debe mantener el material de interfaz de usuario de los hilos de fondo. WPF tiene un montón de complejidad para mantenerlo ocupado sin añadir el dolor de cabeza adicional de enhebrar cuestiones a la mezcla.

Otros consejos

Parece que va a agregar el mismo elemento de interfaz de usuario para múltiples contenedores primarios al mismo tiempo.

Por ejemplo, si intento myStackPanel.Children.Add (myUIElement) simultáneamente en hilos separados, en referencia al mismo objeto elemento de interfaz de usuario, esto haría que el error que está viendo.

Si necesita los mismos elementos de interfaz de usuario para múltiples hilos, considere la clonación de ellos o mover la lógica de interfaz de usuario para el hilo principal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top