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