使用backgroundworker时是否可以在doWork中更新视图?

时间:2019-03-24 22:51:06

标签: c# .net backgroundworker

我正在创建一个签到登录应用程序,该应用程序允许学生通过在NFC读卡器上点击其卡进行登录。讲师的门户网站上会显示出勤屏幕,讲师将能够跟踪到谁登录了,该屏幕将为尚未参加会议的学生显示一个红色圆圈,为已登录的学生显示一个绿色圆圈。

我正在使用后台工作人员,该工作人员将允许NFC读取器连续监听要扫描的卡,并在需要时立即更新UI。这是我第一次与背景工作人员合作,因此我对使用它们的了解不足。问题是,当扫描卡并识别出学生时,我不知道如何更新UI。

 private void WaitChangeStatus(object sender, DoWorkEventArgs e)
        {
            nfcSer = new MainWindow();
            while (!e.Cancel)
            {

                if (nfcSer.connectCard())
                {
                    //this updates the student's attendance status to true
                    StudentsController.setAttendStudent(nfcSer.getcardUID(), Convert.ToInt32(Session["courseID"]));

                    //this calls the method which returns the same view of the attendance list of students however the student attendance status is changed.
                    classStudents(Session["ModuleName"].ToString());
                }
            }
        }

1 个答案:

答案 0 :(得分:-1)

使用

SynchronizationContext.Current

在程序的开头(在ui线程内部)以存储其同步上下文。 然后您可以使用

 SynchronizationContext.Post(SendOrPostCallback, Object)

在UI线程上运行代码。