使用Windows服务保存文件

时间:2011-12-22 06:56:40

标签: c# windows-services

我有一个Windows服务,包含一个具有4000 Interval的计时器,在计时器的tick方法中运行保存方法并在特定路径中保存位图文件,如下所示:

 protected override void OnStart(string[] args) {
        CaptureTimer.Start();
    }

private void CaptureTimer_Tick(object sender, EventArgs e) {
        DateTime dt = DateTime.Now;
        Bitmap capture = Capture.GetImage();
        capture.Save(@"D:\Doc\Temp\GeoServiceFiles\" + Environment.MachineName +
        dt.Ticks.ToString() + ".bmp");
    }

但是没有任何保存的文件,我在Win Application中测试了确切的代码并且正确地用button1_Click替换了OnStart方法。也用于测试我的服务添加一个事件日志:eventLog1.WriteEntry("test service");并正确保存日志,但是没有任何已保存的文件,那么有什么特殊方法可以使用Windows服务保存文件吗?

2 个答案:

答案 0 :(得分:2)

您是否检查了文件夹D:\Doc\Temp\GeoServiceFiles\的权限?

Windows服务通常作为本地系统,网络服务或类似服务运行,具体取决于您的设置方式,但它与您作为自己用户运行的获胜应用程序不具有相同的权限。

尝试将文件夹设置为“完全控制”,以便检查其是否有效,然后在问题来源之后优化权限。

答案 1 :(得分:1)

你使用什么计时器?我认为您必须使用System.Threading.Timer查看此Use of Timer in Windows Service