Dispatcher.BeginInvoke,试图使用lambda从文本块获取字符串集,但获取转换错误
本文关键字:获取 字符串 错误 转换 文本 BeginInvoke lambda Dispatcher | 更新日期: 2023-09-27 17:57:56
我试图从按钮调用选定的列表框项,而不是wpf中的listbox.selecteditemchanged
方法。所以当我尝试时
string yadda = listbox.SelectedItem.ToString();
我得到一个例外:
调用线程无法访问此对象,因为其他线程拥有它。
所以,我想做的是:
Dispatcher.BeginInvoke(() =>
{
lbxSelectedItem = (lbxFileList.SelectedItem as TextBlock).Text;
});
这也不起作用,因为我得到了另一个例外:
无法将lambda表达式转换为类型"System.Delegate",因为它不是委托类型
将lambda转换为Action
:
Dispatcher.BeginInvoke((Action)(() => { /*DoStuff*/ }));
或者从lambda:中构造一个
Dispatcher.BeginInvoke(new Action(() => { /*DoStuff*/ }));
您可能可以为Dispatcher
编写一个使用Action
的扩展方法,这样lambda就会被隐式转换。