C# BackgroundWorker 意外退出

C# BackgroundWorker Exiting Unexpectedly

我的应用程序中有以下后台工作人员,目的是在没有可用会话时自动启动用户会话。

这是在初始化时在后台工作程序 (backgroundInit) 上完成的。正如您在下面看到的,我有一个 while 循环,只要 var checker 保持为 false,它就会继续 运行:

var checker = false;
var i = 0;
while (checker == false)
{
   _session = funcs.GetSession(_servers, _name);
   _sessID = _session[0].Trim();
   _servName = _session[1];

   checker = funcs.CheckRunning("lync.exe");
   i++;

   if (i > 200)
   {
      break;
   }
}

CheckRunning 方法仅检查指定程序(在本例中为 "lync")当前是否 运行ning 和 returns truefalse相应地(这是通过CMD命令完成的)。

当我 运行 应用程序处于空会话中时,虽然 "Lync" 绝对不是 运行ning,但 while 循环仅在爆发前迭代一次。

为什么 运行从 Backgroundworker 中启用一个进程或太多进程可能会导致它退出?

如评论所述,这不是 BackgroundWorker 的问题,而是 _sessID = session[0].Trim(); 处发生的异常,会话尚未开始,因此没有 ID。

为了解决这个问题,我简单地在这个赋值周围放置了一个 Try/Catch 块,让程序默默地忽略异常:

    try
    {
        _sessID = _session[0].Trim();
        _servName = _session[1];
    }
    catch (Exception exp)
    {
        // MessageBox.Show(exp.Message);
    }

这对我有用,因为循环将继续检查直到计数器 i 达到 200 限制,在该阶段程序将接受失败。