【发布时间】:2012-09-18 21:04:39
【问题描述】:
我遇到了最奇怪的问题。
在我的 C# 解决方案中,我有一个桌面测试应用程序和一个服务应用程序。在启动两个应用程序时,我调用完全相同的方法,但行为完全不同。 我的桌面应用程序运行良好,读取 COM 端口,处理该信息,然后将该数据插入我的数据库。 服务应用程序,读取 COM 端口正常,但随后对数据的处理完全不同,之后它抛出一个 SQLException,因为它试图转换错误的数据(特别是 datetime '01/01/0001')
我需要这个应用程序成为一个服务,我有桌面应用程序只是为了测试它。我从事服务工作已有一段时间了,以前从未见过这种行为。
使用完全相同的库调用相同的函数时,应用程序和服务的工作方式怎么可能如此不同?
代码如下:
-
服务:
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; }
希望你们能帮帮我。
谢谢。
【问题讨论】:
-
“数据处理完全不同”是什么意思。你不是说代码是一样的吗?你能在你注意到第一个差异的地方标记代码吗?
-
您向我们展示的代码并不真正相关。在您的方法中的某个地方,正在对作为服务运行时无效的权限或上下文做出假设。您必须附加到服务并逐步查看发生了什么。您也可以尝试在您的用户帐户下运行该服务作为故障排除步骤,以查看它是否正常工作。
标签: c# .net service desktop-application