我正在开发一个winforms应用程序,它调用类库中的方法来获取数据。如果此过程需要时间,我不希望阻止UI线程。
当数据从数据库中获取时(使用backgroundWorker在异步中发生),我向调用Application.DoEvents();
的UI发送一个事件,并且UI保持响应。
问题是因为Application.DoEvents()
用户可以点击UI上的其他按钮并发送更多请求。我们不能让这种情况发生。此外,我无法打开UI上的模式对话框,而数据提取工作没有结束,提取数据后对话框打开!!
简单地说:有没有办法让用户体验没有Application.DoEvents的响应式UI 要么 我可以禁用应用程序生成的事件吗?
答案 0 :(得分:0)
在.NET 3,5上,Backgroundworker用于在工作线程上工作。它还支持在执行此操作时向UI线程发送通知。在4.0+ Tasks上用于执行此操作。两种实现都不需要Application.DoEvents
。这也应该避免