【问题标题】:Does C# windows service takes time to start around 60-65 sec? [closed]C# windows 服务是否需要大约 60-65 秒才能启动? [关闭]
【发布时间】:2010-01-15 16:12:01
【问题描述】:

我用 C# 设计了一个 windows 服务,启动需要时间(60-70 秒)。我想知道通常需要那么长时间才能开始吗?是我的代码花了这么多时间吗?

我有两个线程,每 6 秒和 1 分钟运行一次。

如果需要这么多时间,有人能告诉我为什么要花这么多时间吗?不详细,只是概述。

【问题讨论】:

  • 这取决于你在服务上运行什么onStart() 然后是一般系统性能,你有没有检查过其他服务的启动时间。
  • 我只是设置定时器并初始化它们
  • 你确定没有别的东西吗?比如检查磁盘的循环有时会通过磁盘驱动器循环可能会导致代码变慢,尤其是使用软盘驱动器(即如果你有软盘驱动器)
  • 还有一个线程检查数据库中的数据,但这只是开始。它没有任何间隔

标签: c# windows windows-services


【解决方案1】:

如果你的服务在启动过程中做了很多工作(service.OnStart),那么启动需要很长时间。

如果您希望服务立即启动,请将工作推迟到另一个线程。

这假设正常的服务启动几乎是立即的。

【讨论】:

  • 它所做的任何事情都会设置两个计时器,每 6 秒和 1 分钟运行一次。最后一个线程在服务启动时检查数据库中的数据。你认为这可能是原因吗?
  • 最后一个线程检查数据并采取相应的行动。比如发送邮件等
  • 很可能是最后一个线程。检查数据库和发送电子邮件可能需要很长时间。
  • 完全正确。我刚刚注释掉了最后一个线程功能,它开始很快。当我取消注释时,它开始像往常一样缓慢。
【解决方案2】:

就像奥德说的,

     protected override void OnStart(string [] args)
  {
System.Threading.Thread workerThread =new System.Threading.Thread(longprocess());
workerThread.start();
  }

private void longprocess()
{
///long stuff
}

虽然这会使您的服务快速启动,但并不能保证 longprocess() 会很快完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多