2017-02-28 4 views
0

In WinForm, ich benutze Invoke und delegieren, um UI zu aktualisieren, es ist normal.Update UI mit Aufruf und delegieren

this.Invoke((EventHandler)(delegate { txData.Text = data; })); 

Aber in WPF, habe ich die gleichen, und die Probleme wie diese, ist es angezeigt "TargetParameterCountException" und "Parameter zählen mismatch",

this.Dispatcher.Invoke((EventHandler)(delegate { txData.Text = data; })); 

Sie Rat bitte So könnte von dem, was kann ging hier schief? Danke im Voraus.

Antwort

0

EventHandler ist wie folgt definiert:

public delegate void EventHandler(object sender, EventArgs e); 

So müssen Sie erforderlichen Parameter übergeben,

this.Dispatcher.Invoke((EventHandler)(delegate { txData.Text = data; }), this, null); 

Aber normale Weg ist dies:

this.Dispatcher.Invoke(() => { txData.Text = data; }); 

oder

this.Dispatcher.Invoke(delegate { txData.Text = data; }); 
0

versuchen, die Anwendung zum Aufrufen Dispatcher-Methode auf dem UI-Thread benutzen:

Application.Current.Dispatcher.BeginInvoke((Action) (() => SomeFoo())); 

Oder

Application.Current.Dispatcher.Invoke((Action) (() => SomeFoo()));