所以,也许我误解了Func的用法但是
Func<ComboBox, string> getCurrentValue = s => s.SelectedValue.ToString();
Run Code Online (Sandbox Code Playgroud)
getCurrentValue(cb_message_type)从我的Workerthread 调用时创建一个线程错误.什么是获得Combobox选定价值的最佳解决方案?
非常感谢,
rAyt
编辑
MSDN
"lambda表达式的基础类型是通用Func委托之一.这使得可以将lambda表达式作为参数传递,而无需将其明确地分配给委托."
由于Windows控件具有线程关联性,因此您有两个选项:
由于第一个是微不足道的,我将使用捕获的变量给出第二个示例:
object value = null;
yourCombo.Invoke((MethodInvoker) delegate {value=yourCombo.SelectedValue;});
string s = value.ToString();
Run Code Online (Sandbox Code Playgroud)
这里的内部位delegate {...}发生在UI线程上,即使它周围的代码在工作线程上.您可以在 func中混合上面的内容,或者在切换线程后调用整个func.