我有表单(ui线程)和后台工作线程。我正在尝试检查主要ui线程中的单选按钮是否在backgroundworker线程内被检查。我如何比较在我的backgroundworker的dowork事件中的if语句中的bool类型?
注意:我正在使用WPF。
private void backgroundworker_DoWork(object sender, DoWorkEventArgs e)
{
if () // if (rdbCreditCard.Checked == true) {} etc. etc.
{
}
}
答案 0 :(得分:3)
您可能想要考虑不从后台线程中访问该复选框。这样做会导致一些上下文切换以及通过调度程序或代理对请求进行序列化。
相反,您可以将事件处理程序添加到在UI线程中执行的复选框,并记录复选框状态以供工作线程使用。如果在工作程序启动时只需要复选框的状态,则可以将其作为线程参数从UI线程传递,从而避免事件处理程序和状态。
答案 1 :(得分:2)
如果您使用的是WPF,则使用UI线程的调度程序并在ui线程上调用该方法。如果使用winforms,则在ui线程上创建一个委托来运行该方法。