我有一个.net窗口应用程序(一种形式),有许多按钮,像加载数据从数据库,下一页,上一页,搜索等我想使用backgroundworker所有的按钮,当他们被点击,所以我的用户界面不被冻结。一个backgroundworker对象或多个backgroundworker对象?
问题是,我应该在整个窗体中为所有按钮使用1个backgroundworker对象还是每个按钮使用单独的backgroundworker?
我有一个.net窗口应用程序(一种形式),有许多按钮,像加载数据从数据库,下一页,上一页,搜索等我想使用backgroundworker所有的按钮,当他们被点击,所以我的用户界面不被冻结。一个backgroundworker对象或多个backgroundworker对象?
问题是,我应该在整个窗体中为所有按钮使用1个backgroundworker对象还是每个按钮使用单独的backgroundworker?
这篇文章很有用,如果你只使用一个,你需要将所有的数据库操作包装到一个结果中。否则,你应该使用多个backgroundworkers。
Handling multiple operations using BackgroundWorker
多个会更好。
您可以使用任务工厂进行此操作。无需创建自己的后台工作人员,速度更快。
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