Dav*_*eer 3 c# wpf multithreading
我试图从WPF中的BackgroundWorker中读取复选框的值:
这不起作用:
bool? isSleepChecked = checkBoxSleep.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate{ return checkBoxSleep.IsChecked;});
Run Code Online (Sandbox Code Playgroud)
无法将匿名方法转换为委托类型'System.Threading.ThreadStart',因为块中的某些返回类型不能隐式转换为委托返回类型
编辑 - 这是HB的答案,使用委托而不是lambda表达,我发现它更具可读性
bool? isSleepChecked = (bool?)checkBoxSleep.Dispatcher.Invoke(new Func<bool?>(delegate { return checkBoxSleep.IsChecked; }));
Run Code Online (Sandbox Code Playgroud)
改为分配变量,然后你不需要return.
bool? isSleepChecked;
checkBoxSleep.Dispatcher.Invoke(new Action(
() => isSleepChecked = checkBoxSleep.IsChecked));
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用具有返回值的委托(例如a Func<T>):
bool? isSleepChecked = checkBoxSleep.Dispatcher.Invoke(new Func<bool?>(
() => checkBoxSleep.IsChecked));
Run Code Online (Sandbox Code Playgroud)
(在.NET 4.5之前需要返回类型转换)
| 归档时间: |
|
| 查看次数: |
2643 次 |
| 最近记录: |