我对 c# 和多线程有点陌生,所以我可能在这里犯了一个愚蠢的错误,但我似乎无法弄清楚这一点。我有一个应用程序,它根据在我的网络上发现的机器数量创建线程数组,然后为每台机器创建一个执行我创建的函数的线程。退出 for 循环后,我创建了另一个运行另一个函数的线程。我的函数工作得很好,那里没有问题,问题是由于某种原因在退出 for 循环并继续创建下一个线程后,我的应用程序跳回 for 循环,索引现在超出范围并导致要抛出的异常。我希望我能清楚地解释这一点,我对为什么会发生这种情况感到困惑,因为我不知道为什么在完成 for 循环后它会执行一行代码并跳回。
smThread = new Thread[networkedComputers.Count];
for (UInt16 i = 0; i < networkedComputers.Count; i++)
{
smThread[i] = new Thread(delegate() { sm.RunServerMonitorPerMachine(networkedComputers[i].ToString()); });
smThread[i].Start();
}
dailyThread = new Thread(dailyEvents);
dailyThread.Start();