我有一个作为 Windows 服务运行的 C# 控制台应用程序。它实现了BackgroundService
,这是实现 Windows 服务的推荐方法。
此外,我还使用 Hangfire 来启动我的任务。
我注意到较长的运行任务需要近 11 分钟,而在我的本地计算机上运行相同的任务(不是作为 Windows 服务,不使用 ,BackgroundService
并且处于调试模式)需要不到 6 分钟。
我是否可以假设后台线程通常运行速度较慢?或者这里可能还存在其他问题?
代码本身对 SQL Server 数据库中的数据执行一系列计算并更新数据。
线程以其给定的优先级运行,您可以为特定任务赋予更高的优先级,这意味着它将在任何较低优先级的线程之前执行。后台线程可以具有比其他线程更高的优先级,而 UI 线程可以具有较低的优先级。
实际上,这并没有太大区别,因为您可能拥有多线程/核心处理器。
如果您正在访问数据库,您的线程/任务可能正在等待数据库服务器回复(I/O 绑定操作)。除非您正在执行非常复杂的计算(CPU 密集型操作),否则线程可能正在等待外部事件发生,而这是您无法控制的。