如何使用backgroundworker更新GUI?
我花了一整天的时间试图让我的应用程序使用线程,但没有运气。我已经阅读了很多关于它的文档,我仍然会遇到很多错误,所以我希望你能帮助我。
我有一个耗时的方法,它调用数据库并更新GUI。这必须一直发生(或大约每30秒)。
public class UpdateController{ private UserController _userController; public UpdateController(LoginController loginController, UserController userController) { _userController = userController; loginController.LoginEvent += Update; } public void Update() { BackgroundWorker backgroundWorker = new BackgroundWorker(); while(true) { backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); backgroundWorker.RunWorkerAsync(); } } public void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { _userController.UpdateUsersOnMap(); }}
使用这种方法我得到一个例外,因为后台工作者不是和STA线程(但从我可以理解这是我应该使用的)。我试过一个STA线程,并给出了其他错误。
我认为问题是因为我在进行数据库调用时尝试更新GUI(在后台线程中)。我应该只进行数据库调用,然后以某种方式它应该切换回主线程。在主线程执行后,它应该返回后台线程,依此类推。但我看不出怎么做。
应用程序应在数据库调用后立即更新GUI。Firering事件似乎不起作用。背景线程只是输入它们
海绵宝宝撒
蓝山帝景
冉冉说
相关分类