Frage

Ich habe andere damit zusammenhängende Frage zu lesen, aber ich kann sie wirklich auf diesen beziehen bekommen, so dachte ich es am besten war, um WPF zu fragen, Im ziemlich neu und so weiter, so wenden Sie sich bitte Geduld mit mir.

Ich bin mit diesem http://www.codeproject.com/KB/WPF/wpf_notifyicon.aspx api zur Arbeit mit benutzerdefinierten WPF Fenstern (insbesondere FancyBalloon).

Allerdings ist ich über das folgende Problem kommen, scheine ich nicht in der Lage Balloontips in einem separaten Thread zu beginnen (ich brauche das, weil ich E-Mails bin Parsen und daher, wenn es drei E-Mails zum Beispiel ist, zeigt es die erste E-Mail (das funktioniert gut), aber wenn es um die zweite E-Mail kommt stürzt mit einem TargetInvocationException, { „angegebenes Element ist bereits das logische Kind eines anderen Elements. Trennen sie es zuerst.“}.

Das Ding ist, im, arbeitet angeblich mit der gleichen Instanz, und ich habe versucht, sie nenne es vor zu schließen, es etc Entsorgung, aber ohne Erfolg. (Dann wieder, wenn ich es entsorgen, ich kann eine andere Instanz erstellen, wie scheinbar WPF UI-Komponenten von einem statischen Faden so im gesamten Looping von E-Mail + Anzeigen Ballon aufgerufen werden muss, ich versuche, das gleiche Balloontip zu verwenden.

Irgendwelche Vorschläge bitte? Ich bin wirklich ratlos hier und ich habe jetzt schon eine ganze Weile auf sie gewesen: /

Ich habe mich gefragt, ob es jemand war

War es hilfreich?

Lösung

In der Regel WPF-Steuerelemente sollte nur auf dem Haupt-UI-Thread zugegriffen und aktualisiert werden. Es gibt Threadaffinität prüft die Daten in aller Bindung Innereien, die eine Ausnahme auslösen, wenn Sie auf eine Datum gebunden Eigenschaft von jedem Thread zugewiesen werden, die nicht der WPF UI-Thread ist zum Beispiel.

Sie können entweder den UI-Code von Ihrem Hintergrund Worker-Thread entfernen, oder vernünftige Nutzung eines SynchronizationContext machen aus Ihrem Hintergrund-Thread Code-Schnipsel zum Aufruf auf dem UI-Thread ausgeführt werden.

Wenn Sie neu in WPF oder neu zu Threading, sollten Sie die UI-Sachen halten, die Hintergrund-Threads. WPF viel Komplexität hat Sie beschäftigt zu halten, ohne die zusätzlichen Kopfschmerzen Zugabe Fragen die Mischung aus Threading.

Andere Tipps

Es scheint, Dich hinzufügen, das gleiche Oberflächenelement mehr übergeordneten Container zugleich.

Zum Beispiel, wenn ich versuche, myStackPanel.Children.Add (myUIElement) gleichzeitig in separaten Threads, auf das gleiche UI-Element-Objekt, würde dies dazu führen, den Fehler Sie sehen.

Wenn Sie die gleichen Elemente der Benutzeroberfläche für mehrere Threads benötigen, sollten das Klonen ihnen oder UI-Logik an den Haupt-Thread zu bewegen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top