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",因为它不是委托类型

Dispatcher.BeginInvoke,试图使用lambda从文本块获取字符串集,但获取转换错误

将lambda转换为Action:

Dispatcher.BeginInvoke((Action)(() => { /*DoStuff*/ }));

或者从lambda:中构造一个

Dispatcher.BeginInvoke(new Action(() => { /*DoStuff*/ }));

您可能可以为Dispatcher编写一个使用Action的扩展方法,这样lambda就会被隐式转换。