我有一个.net windows应用程序(单个表单),有很多按钮,比如从db,下一页,上一页,搜索等加载数据。我想在点击它们时使用backgroundworker来处理所有按钮,所以我的用户界面没有冻结。
问题是,我应该在整个表单中为所有按钮使用1个backgroundworker对象,还是在每个按钮上使用单独的背景工作者?
答案 0 :(得分:0)
如果您只使用一个需要将所有数据库操作包装到一个结果中,那么这篇文章很有用。否则你应该使用多个背景工作者。
Handling multiple operations using BackgroundWorker
多个会更好。
答案 1 :(得分:0)
您可以使用任务工厂。不需要创建自己的后台工作人员/工人,速度更快。
Task<bool> task = Task.Factory.StartNew<bool>
(() => /*Do you button operations */);
您可以在此处详细了解任务:http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx
请注意,这需要.Net 4.5,如果您要定位较旧的Framewroks,请查看一个线程池: http://msdn.microsoft.com/en-us/library/3dasc8as.aspx