Domanda

Ho letto altra questione correlata, ma non posso davvero farli riferiscono a questo così ho pensato che fosse meglio chiedere, Im abbastanza nuovo per WPF e così via quindi per favore abbiate pazienza con me.

Sto usando questo api http://www.codeproject.com/KB/WPF/wpf_notifyicon.aspx a lavorare con l'abitudine WPF di Windows (in particolare FancyBalloon).

Tuttavia, sto arrivando attraverso il seguente problema, mi sembra in grado di iniziare BalloonTips in un thread separato (ho bisogno di questo perché io sono l'analisi e-mail e, quindi, se ci sono 3 messaggi di posta elettronica, per esempio, si visualizza la prima e-mail (che funziona bene), ma quando si tratta della seconda e-mail si blocca con un TargetInvocationException, { "elemento specificato è già il figlio logica di un altro elemento. Scollegare per primo."}.

La cosa è, im presumibilmente a lavorare con la stessa istanza e ho cercato chiamandolo per chiuderla prima, disponendo che, ecc, ma senza alcun risultato. (Poi di nuovo se dispongo di esso, non posso creare un'altra istanza come apparentemente componenti WPF UI devono essere chiamati da un filo statico in modo tutto il loop di messaggi di posta elettronica che visualizza palloncino, sto cercando di utilizzare lo stesso BalloonTip +.

Qualche suggerimento per favore? Sono veramente in perdita qui e sono stato su di esso per un bel po 'di tempo: /

Mi chiedevo se c'era qualcuno

È stato utile?

Soluzione

In generale, i controlli WPF dovrebbe essere letta e aggiornati solo sul thread principale dell'interfaccia utente. Ci sono controlli filo di affinità di tutto i dati interiora che un'eccezione se si assegna a una proprietà di dati legati da qualsiasi thread che non è il thread WPF UI vincolanti, per esempio.

È anche possibile rimuovere il codice di interfaccia utente dal thread in background lavoratore, o fare uso giudizioso di uno SynchronizationContext per invocare dal tuo thread in background frammenti di codice da eseguire sul thread dell'interfaccia utente.

Se sei nuovo a WPF o nuovo threading, si dovrebbe tenere la roba UI fuori dei thread in background. WPF ha un sacco di complessità per tenerti occupato senza aggiungere il mal di testa aggiuntiva di problemi di threading per il mix.

Altri suggerimenti

Sembra che si sta aggiungendo lo stesso elemento dell'interfaccia utente a più contenitori padre allo stesso tempo.

Ad esempio, se si tenta myStackPanel.Children.Add (myUIElement) contemporaneamente in thread separati, facendo riferimento allo stesso oggetto elemento dell'interfaccia utente, questo potrebbe causare l'errore state vedendo.

Se avete bisogno gli stessi elementi dell'interfaccia utente per più thread, li considerano la clonazione o al movimento del logica interfaccia utente per il thread principale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top