Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 桌面应用程序和服务应用程序之间的不同行为_C#_.net_Service_Desktop Application - Fatal编程技术网

C# 桌面应用程序和服务应用程序之间的不同行为

C# 桌面应用程序和服务应用程序之间的不同行为,c#,.net,service,desktop-application,C#,.net,Service,Desktop Application,我遇到了最奇怪的问题 在我的C#解决方案中,我有一个桌面测试应用程序和一个服务应用程序。在两个应用程序开始时,我调用完全相同的方法,其行为完全不同。 我的桌面应用程序工作正常,读取COM端口,处理该信息,然后将该数据插入数据库。 服务应用程序可以很好地读取COM端口,但是数据的处理方式完全不同,之后它会抛出一个SQLException,因为它试图转换错误的数据(具体是datetime“01/01/0001”) 我需要这个应用程序是一个服务,我有桌面应用程序只是为了测试它。我在服务方面工作了一段时

我遇到了最奇怪的问题

在我的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;
    
    }
    
我希望你们能帮助我


谢谢。

'01/01/0001'是有效的.NET日期,但不是有效的MS SQL日期

您可能没有使用MSSQL,但任何数据库都将具有有效的日期范围

SQL上的日期时间是1753年1月1日到9999年12月31日

SmallDateTIme为1900年1月1日至2079年6月6日


我总是检查日期范围是否早于和插入。

'01/01/0001'是有效的.NET日期,但不是有效的MS SQL日期

您可能没有使用MSSQL,但任何数据库都将具有有效的日期范围

SQL上的日期时间是1753年1月1日到9999年12月31日

SmallDateTIme为1900年1月1日至2079年6月6日


我总是在和insert之前检查日期范围。

虽然代码可能相同,但服务在完全不同的安全上下文下运行。它们通常在
LocalSystem
用户下运行,无法访问桌面。这种使用也有非常有限的网络访问


您需要将代码作为服务进行调试,或者至少添加一些调试日志语句,以尝试找出不同的行为方式。

虽然代码可能相同,但服务在完全不同的安全上下文下运行。它们通常在
LocalSystem
用户下运行,无法访问桌面。这种使用也有非常有限的网络访问


您需要将代码作为服务进行调试,或者至少添加一些调试日志语句,以尝试找出不同的行为。

问题已经解决。由于某些原因,我的服务使用的CultureInfo与我的桌面应用程序使用的CultureInfo不同

桌面应用程序似乎使用默认的CultureInfo,这是在区域配置上设置的,而服务应用程序出于某种原因没有使用


谢谢你的帮助。

问题解决了。由于某些原因,我的服务使用的CultureInfo与我的桌面应用程序使用的CultureInfo不同

桌面应用程序似乎使用默认的CultureInfo,这是在区域配置上设置的,而服务应用程序出于某种原因没有使用


感谢您的帮助。

数据处理完全不同是什么意思。你不是说代码是一样的吗?你能在你注意到第一个差异的地方标记代码吗?你给我们看的代码实际上并不相关。在方法中的某个地方,正在对作为服务运行时无效的权限或上下文进行假设。您必须连接到服务并逐步查看发生了什么。您也可以尝试在您的用户帐户下运行该服务,作为故障排除步骤,以查看它是否正常工作。“数据处理完全不同”是什么意思。你不是说代码是一样的吗?你能在你注意到第一个差异的地方标记代码吗?你给我们看的代码实际上并不相关。在方法中的某个地方,正在对作为服务运行时无效的权限或上下文进行假设。您必须连接到服务并逐步查看发生了什么。您也可以尝试在您的用户帐户下运行该服务,作为故障排除步骤,以查看它是否正常工作。是的,我理解,我使用了datetime示例来解释发生了什么。这就是我的数据未正确处理的连续性。我的桌面应用程序上没有thar错误。然后隔离数据值是否出错,并发布该行代码。你为什么试图向数据库提交无效数据?是的,我明白,我用datetime的例子来解释发生了什么。这就是我的数据未正确处理的连续性。我的桌面应用程序上没有thar错误。然后隔离数据值是否出错,并发布该行代码。为什么您试图向DB提交无效数据?我认为问题可能是区域配置。奇怪的是,我的桌面应用程序工作正常,而我的服务却没有。我的服务是否可能在与桌面应用不同的区域配置下工作?是的。只需使用默认格式记录当前日期和时间,您就会看到差异。+1您引导他找到答案,但不是发表评论,而是检查他自己发布的答案。我在阅读您的答案之前解决了问题,这就是我自己发布答案的原因。这不是新手的事,就像发生的那样。。。我觉得你有点急于回答。。。无论如何,我非常感谢你的帮助。。。我无意制造任何问题。。。只是为了帮助和贡献这个伟大的论坛。我想问题可能是区域配置。奇怪的是,我的桌面应用程序工作正常,而我的服务却没有。我的服务是否可能在与桌面应用不同的区域配置下工作?是的。只需使用de记录当前日期和时间