【发布时间】:2010-06-10 21:16:53
【问题描述】:
Senerio
我们有一个记录事件的 C# .Net Web 应用程序。当事件被主管批准时,需要查询外部数据库。对该外部数据库的查询有时需要一段时间才能运行。这种延迟是通过浏览器体验到的。
可能的解决方案
我想使用线程来消除浏览器的模拟挂起。我以前用过Thread 类,听说过ThreadPool。但是,我刚刚在this post 中找到了BackgroundWorker。
BackgroundWorker 类允许您在单独的专用线程上运行操作。下载和数据库事务等耗时的操作可能会导致您的用户界面 (UI) 在运行时似乎停止响应。当您需要响应式 UI 并且面临与此类操作相关的长时间延迟时,BackgroundWorker 类提供了一种方便的解决方案。
BackgroundWorker 是处理长时间运行的查询时要走的路吗?
同时运行 2 个或更多 BackgroundWorker 进程会发生什么?它像游泳池一样处理吗?
【问题讨论】:
-
抱歉,这是桌面应用程序还是网络应用程序?
-
@Eddie:C# 不支持线程。您问的是 .NET Framework,对吗?
-
@John C# 支持线程!
-
BackgroundWoker 在后台使用了.Net ThreadPool,所以如果你使用两个后台worker,就像调用了两次threadpool.queueuserworkitem。
-
@Eddie 小心。约翰是这种区别的坚持者。 C# 本身没有线程。 .net 框架(即
Thread类)提供线程支持。
标签: c# .net multithreading