我有最奇怪的問題。桌面應用程序和服務應用程序之間的不同行爲
在我的C#解決方案中,我有一個桌面測試應用程序和一個服務應用程序。在兩個應用程序的開始時,我會調用完全相同的方法,並且行爲完全不同。 我的桌面應用程序工作得很好,讀取一個COM端口,處理該信息,然後將該數據插入到我的數據庫中。 服務應用程序,讀取COM端口正常,但是然後處理的數據是完全不同的,之後,它拋出一個SQLException,因爲它試圖轉換錯誤的數據(Specimeicaly日期時間'01/01/0001')
我需要這個應用程序是一個服務,我有桌面應用程序只是爲了測試它。我一直在研究服務一段時間,之前我從來沒有見過這種行爲。
應用程序和服務工作如此不同以致使用EXACT相同的庫調用相同的函數的可能性如何?
下面是代碼:
服務:
protected override void OnStart() { csGPS.startGPSData(); Thread hiloEscuchar = new Thread(delegate() { csListener listener = new csListener(); listener.listenAutoCommand(); }); hiloEscuchar.Start(); Thread hiloEnviar = new Thread(delegate() { csSender.buscarComandos(); }); hiloEnviar.Start(); Thread hiloEnviarPosiciones = new Thread(delegate() { csSender.enviarPosiciones(); }); hiloEnviarPosiciones.Start(); }
桌面應用程序:
private void btnComenzar_Click(object sender, EventArgs e) { csGPS.startGPSData(); Thread hiloEscuchar = new Thread(delegate() { csListener listener = new csListener(); listener.listenAutoCommand(); }); hiloEscuchar.Start(); Thread hiloEnviar = new Thread(delegate() { csSender.buscarComandos(); }); hiloEnviar.Start(); Thread hiloEnviarPosiciones = new Thread(delegate() { csSender.enviarPosiciones(); }); hiloEnviarPosiciones.Start(); lblEstado.Text = "STARTED"; btnComenzar.Enabled = false; }
我希望你們能幫助我。
謝謝。
這意味着'處理數據是完全不同的'。你不是說代碼是一樣的嗎?你能標記你注意到第一個區別的代碼嗎? –
您向我們展示的代碼並不真正相關。在您的方法中的某處,正在對作爲服務運行時無效的權限或上下文進行假設。你將不得不附加到服務,並逐步瞭解發生了什麼。您也可以嘗試在您的用戶帳戶下運行該服務作爲故障排除步驟,以查看它是否正常工作。 –