2011-12-22 78 views
1

我有一個Windows服務由4000間隔定時器,在保存方法運行計時器的滴答方法,並保存在特定路徑中的位圖文件,它是這樣的:保存文件使用Windows服務

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應用程序中的確切代碼,並且正確地使用button1_Click替換了OnStart方法。也用於測試我的服務添加事件日誌:eventLog1.WriteEntry("test service");和日誌保存正確但尚未有任何保存的文件,那麼是否有任何特殊的方式來保存與Windows服務的文件?

+4

這是令人驚訝的有多少人在這個網站上創建Windows服務,繪製/保存位圖圖像。我無法真正想到很多應用程序,但我每天平均看到2-3個問題! – 2011-12-22 06:58:34

+0

[在Windows服務中使用定時器]的可能重複(http://stackoverflow.com/questions/5495842/use-of-timer-in-windows-service) – 2011-12-23 00:19:15

回答

1

你使用什麼計時器?我認爲你必須使用System.Threading.Timer看看這個Use of Timer in Windows Service

+1

這爲什麼解決任何問題? – Ted 2013-05-21 14:15:14

+0

另外,爲什麼OP在這個答案中問自己一個問題......? – ZX9 2016-11-18 14:23:29

1

你檢查了文件夾D:\Doc\Temp\GeoServiceFiles\的權限嗎?

Windows服務通常以本地系統,網絡服務或類似方式運行,具體取決於您如何設置,但它不會與您作爲自己的用戶運行的win應用程序具有相同的權限。

嘗試將文件夾設置爲「完全控制」,以便每個人都檢查其是否正常工作,然後優化權限,如果這是問題的根源。

+0

我在帳戶屬性中使用本地系統,並且文件夾doesn沒有任何特殊權限是否有其他必須檢查的設置? – Saeid 2011-12-22 07:11:04

+0

您是否嘗試過爲每個人設置完全控制,然後運行該服務?默認情況下本地系統服務沒有保存文件的權限iirc – 2011-12-22 07:24:10

+0

如何將完全控制權設置給每個人? – Saeid 2011-12-22 07:47:03