我试图从按钮调用选定的列表框项,而不是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。

关于c# - Dispatcher.BeginInvoke,尝试使用lambda从文本块获取字符串集,但获取转换错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6181849/

10-11 09:08