2017-02-28 92 views
0

在WinForm中,我使用Invoke和委託來更新UI,這是正常的。使用調用和委託更新UI

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

但在WPF中,我使用的是相同的,而麻煩的是這樣的,它顯示「TargetParameterCountException」和「參數計數不匹配」,

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

所以請你的意見是什麼可能在這裏出錯了?提前致謝。

回答

0

EventHandler的定義是這樣的:

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

所以,你需要傳遞所需的參數,

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

但是,標準的方法是這樣的:

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

,或者

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

嘗試使用該應用程序調度器,用於在UI線程調用方法:

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

或者

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