我有错误,这是我的代码。
private void ComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
_comboBox.Dispatcher.InvokeAsync(() => ContentChanged?.Invoke(sender, EventArgs.Empty));
}
它的说法Dispatcher' does not contain a definition for 'InvokeAsync' and no extension method 'InvokeAsync' accepting a first argument of type 'Dispatcher' could be found (are you missing a using directive or an assembly reference? wpf
我失去了,我需要帮助。感谢。
答案 0 :(得分:4)
Dispatcher.InvokeAsync
绝对是.NET 4.5 的现有方法。如果您尝试编译.NET 4.0或更早版本,您将看到该错误。
它与调用Dispatcher.BeginInvoke
的效果相同。差异是BeginInvoke
接受委托(需要来自lambda的演员),而InvokeAsync
则不接受,因为它接受Action
。这样做是为了重构API,但是仍然没有使用BeginInvoke
来破坏代码。有关详细信息,请参阅this thread。
在.NET 4.5之前:
_comboBox.Dispatcher.BeginInvoke((Action)(() => {
ContentChanged?.Invoke(sender, EventArgs.Empty);
}));
自.NET 4.5 :
_comboBox.Dispatcher.InvokeAsync(() => {
ContentChanged?.Invoke(sender, EventArgs.Empty);
});