Windows服务未调用类库

本文关键字:类库 调用 服务 Windows | 更新日期: 2023-09-27 18:25:55

我有一个Windows服务,它重写OnStart和OnStop方法来调用类库。我使用的是生产者/消费者模型(请参阅http://www.albahari.com/threading/part4.aspx#_Wait_Pulse_Producer_Consumer_Queue我从哪里得到了这个想法/逻辑)。

我遇到的问题是,由于某种原因,Action没有正确运行。这是"(系统)操作"代码(在timer_perated内):

_queue.EnqueueItem(() =>
{
    BuildFile file = new BuildFile();
    file.run();
    _writer.WriteLine("Gets Here: {0}", DateTime.Now.ToString());
    _writer.Flush();
});

正如您可能看到的,_writer基本上是一个"调试"日志记录工具。无论何时调用它,它都会将该行写入文件(Windows服务会在计时器之外运行):

_timer.Interval = 30000; //(3600000)
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Enabled = true;

对于测试,对BuildFile进行的第一次调用是对数据库的简单日志:

public BuildFile()
{
   logEntry("Success", "I'm Running...");
}

但是日志条目永远不会被写入(该方法在其他地方运行良好)。

最奇怪的是,当我用Console应用程序包装类时,它工作得很好。Windows服务中的代码完全相同,但它不会激发BuildFile的东西。

有人见过这样的东西吗?

Windows服务未调用类库

控制台应用程序和服务应用程序很可能在不同的帐户下运行。请确保服务帐户有权访问文件系统路径。此外,如果您对数据库使用Windows身份验证,您也需要对此进行调查。