gpt4 book ai didi

c# - 从另一个线程读取复选框状态

转载 作者:行者123 更新时间:2023-11-30 14:01:01 24 4
gpt4 key购买 nike

我正在尝试从 WPF 中的 BackgroundWorker 读取复选框的值:

这行不通:

bool? isSleepChecked = checkBoxSleep.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate{ return checkBoxSleep.IsChecked;});

无法将匿名方法转换为委托(delegate)类型“System.Threading.ThreadStart”,因为 block 中的某些返回类型不能隐式转换为委托(delegate)返回类型

编辑 - 这是 HB 的回答,使用委托(delegate)而不是 lambda 表达,我觉得它更具可读性

bool? isSleepChecked = (bool?)checkBoxSleep.Dispatcher.Invoke(new Func<bool?>(delegate { return checkBoxSleep.IsChecked; }));

最佳答案

改为分配变量,那么您就不需要 return .

bool? isSleepChecked;
checkBoxSleep.Dispatcher.Invoke(new Action(
() => isSleepChecked = checkBoxSleep.IsChecked));

或者,您可以使用具有返回值的委托(delegate)(例如 Func<T> ):

bool? isSleepChecked = checkBoxSleep.Dispatcher.Invoke(new Func<bool?>(
() => checkBoxSleep.IsChecked));

(需要 .NET 4.5 之前的返回类型转换)

关于c# - 从另一个线程读取复选框状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com