【问题标题】:Windows service not working (C#) [closed]Windows 服务不工作(C#)[关闭]
【发布时间】:2014-05-24 06:36:14
【问题描述】:

我正在创建我的第一个 Windows 服务,它编译并且安装过程成功,我可以启动它,但它似乎没有执行我编程它执行的任何任务。以下是我的主要课程:

public partial class Service : ServiceBase
{
    private Timer timer = new Timer(1000);

    public Service()
    {
        this.InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        using (StreamWriter streamWriter = new StreamWriter("file.txt", true))
        {
            streamWriter.WriteLine("Service");
        }

        this.timer.Elapsed += OnTimedEvent;

        this.timer.Start();
    }

    private static void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        using (StreamWriter streamWriter = new StreamWriter("file.txt", true))
        {
            streamWriter.WriteLine("OnTimedEvent");
        }
    }
}

可能出了什么问题?

【问题讨论】:

  • 调试的时候有没有异常?
  • 好的,这只是我对您问题的看法。您启动它,但在服务文件夹中看不到file.txt,因此您决定它不起作用。但是默认工作目录是%WinDir%\System32,那是你的文件所在
  • (刚刚测试,在 x64 上它写入 SYSWOW64)
  • 为什么默认工作目录与可执行文件所在的目录不同?
  • 我知道这与您的问题无关,但如果我可以提出建议,请使用 Topshelf 来创建您的服务。不需要安装程序包,它使调试变得更容易(就像控制台程序一样,因为这基本上就是你使用 Topshelf 时的样子)topshelf-project.com

标签: c# visual-studio windows-services


【解决方案1】:

我没有意识到我的 Windows 服务的默认工作目录是 C:\Windows\SysWOW64。我只是假设它是我的可执行文件所在的bin\Release 目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2010-09-25
    • 2012-07-28
    • 2012-07-27
    相关资源
    最近更新 更多