我遇到了最奇怪的问题。
在我的 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; }
我希望你们能帮助我。
谢谢。