我有一个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服务保存文件吗?
答案 0 :(得分:2)
您是否检查了文件夹D:\Doc\Temp\GeoServiceFiles\
的权限?
Windows服务通常作为本地系统,网络服务或类似服务运行,具体取决于您的设置方式,但它与您作为自己用户运行的获胜应用程序不具有相同的权限。
尝试将文件夹设置为“完全控制”,以便检查其是否有效,然后在问题来源之后优化权限。
答案 1 :(得分:1)
你使用什么计时器?我认为您必须使用System.Threading.Timer
查看此Use of Timer in Windows Service