是什么让我的程序在Windows启动时延迟工作?

时间:2011-10-24 21:03:26

标签: c# backgroundworker startup

我的程序从Windows启动开始,
但是后台工作人员应该在程序打开后立即工作 但它以延迟开始,然后甚至返回错误的符号(如果站点启动它会返回),
只有大约15秒后,后台工作人员才能继续正常工作并继续工作。我认为这是因为尝试加载的.net框架,或者尚未启动的互联网连接,或者尚未加载的东西(Windows启动)。
什么可以解决这个问题,可能的原因是什么? (WinForm C#)

修改
这是我想到的,
我不认为这是一个很好的做法。还有更好的方法吗?
(加载方法):

    while (!netConnection())
    {
    }
    if(netConnection())
    bwCheck.RunWorkerAsync();

2 个答案:

答案 0 :(得分:5)

  

我认为这是因为.net框架试图加载

不。如果是这样的话,你的程序将无法运行。

  

或尚未启动的互联网连接,或

烨。网卡/接口/连接/未初始化并连接到互联网的任何内容。您不能指望PC在启动时立即连接到互联网。更重要的是,如果您的客户使用网络身份验证在域中,该怎么办?如果他们延迟网络通信直到某个任务完成(这实际上是我的情况下的问题,请严肃地说。)

在这种情况下启动并运行可能需要更长的时间(阅读:不要添加Thread.Sleep()徒劳地尝试“修复”此问题。

我必须在系统设计中解决这样的问题,我们通过PC中的以太网总线与运动控制板进行通信。我最后添加了一些代码来监控网络连接的状态,并且只有在建立时才开始通过网卡与设备通信。

编辑:正如SLaks在评论中指出的那样,在C#中这很简单:The NetworkAvailabilityChanged event为您的编程乐趣。

答案 1 :(得分:0)

绝对是因为一切都还在开始。登录后服务仍然可以在线上线,您看到的快速登录对话框是Windows中的优化,让您在其他所有内容仍然启动时登录。

注意 How to detect working internet connection in C#? 特别是一种避免环回适配器的技术:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()