与获取数据冻结我使用C#。我在这里得到更多的数据从MySQL databse.I'm使用这一个ODBC 3.51 connector.when数据加载冻结我的应用程序创建WPF应用程序。 我试图解决这个问题使用线程。但我无法做到这一点使用线程。请建议的方式对解决我的问题......WPF形式从数据库
0
A
回答
2
使用BackgroundWorker -class。它的使用非常简单,常常用于加载数据等任务。下面的例子演示了它的用法:
BackgroundWorker bgWorker = new BackgroundWorker() { WorkerReportsProgress=true};
bgWorker.DoWork += (s, e) => {
// Load here your data
// Use bgWorker.ReportProgress(); to report the current progress
};
bgWorker.ProgressChanged+=(s,e)=>{
// Here you will be informed about progress and here it is save to change/show progress.
// You can access from here savely a ProgressBars or another control.
};
bgWorker.RunWorkerCompleted += (s, e) => {
// Here you will be informed if the job is done.
// Use this event to unlock your gui
};
bgWorker.RunWorkerAsync();
使用BackgroundWorker的允许的UI线程继续它的处理,因此加载过程中应用程序响应休息。但正因为如此,您还必须确保不会发生依赖加载数据的操作。一个非常简单的解决方案是将主UI元素IsEnabled-property设置为false,并在RunWorkerCompleted中将其设置为true。有了一点幻想,你可以改善这种愚蠢的行为,并提供一个很好的UI体验(取决于应用程序)。
这是一般好的建议做一个单独的线程(BackgroundWorker的)很长一段时间的操作。有一点需要注意:不要在DoWork事件中创建WPF元素。这不会做,因为所有派生类型的DependencyObject必须在它们使用的同一个线程中创建。
还有其他的解决方案,要做到这一点,例如直接创建一个线程或基于事件的异步模式,但是我建议使用的BackgroundWorker你的任务,因为它HANDELS为您的管道。最后,结果是一样的,但它的方式要容易得多。
相关问题
- 1. 从形式写入数据库
- 2. PHP数据库形式CSS
- 3. XAMPP - 形式到数据库
- 4. Access数据库形式
- 5. 以php表格形式从mysql数据库以php的形式显示数据
- 6. 关闭数据库连接时的形式在WPF
- 7. WPF登录认证形式的SQL Server数据库
- 8. 以wpf形式呈现只读数据
- 9. 条形图从数据库
- 10. 移植从形式到WPF
- 11. 数据不会从数据库进入形式
- 12. 数据库不是从形式存储数据
- 13. MySQL数据库不能从形式接收数据
- 14. 我正在从mysql数据库输出“??? acv ???”形式从jsp
- 15. 从WPF保存到SQL Server数据库
- 16. 从数据库中显示图片WPF
- 17. 从PLAY(Scala)中以JSON的形式从数据库获取数据
- 18. 从WPF的数据库字段应用样式
- 19. WPF根据数据库更改更新的条形图
- 20. 使用数据库的导轨形式
- 21. 导轨形式到数据库设置
- 22. 简单的形式没有数据库
- 23. 形式提交空值数据库
- 24. 摇摆形式的数据库连接
- 25. 多页形式和数据库逻辑?
- 26. 的ColdFusion - 形式绑定到数据库
- 27. 形式连接到数据库
- 28. 形式不添加到数据库,它
- 29. 形式张贴到数据库
- 30. 以数据库的形式显示
感谢lot.I将尝试添加背景工人在我的应用程序。 – hmlasnk
@Hemal:如果这个答案帮助你,请点击下面的投票按钮,复选标记,以纪念这个答案为接受的答案。 – HCL
此评论是成绩。再次感谢。 – hmlasnk