c# - 父线程休眠时子线程也休眠?

标签 c# wpf multithreading sleep task-parallel-library

当父线程休眠时,子线程是否也休眠?

现在主线程是UI 我使用任务工厂在主线程中创建了 20 个子线程(让调用线程 2) 在这 20 个子线程中,我使用子工厂再次创建了另外 10 个子线程(让我们调用线程 3)

现在在这个线程 2 中我有无限循环。在无限循环内部检查线程 3 是否完成。如果完成,则处理完成的线程并启动另一个线程。我在无限 while 循环中每次检查都使用 250 毫秒的 sleep 时间。因此,当线程 2 处于 sleep 状态时,线程 3 也处于 sleep 状态,或者它们是独立的。在这里你可以看到代码。

while (true)
{
    int irActiveThreadCount = 0;
    int irFinishedLast = -1;

    for (int i = 0; i < irPerMainSiteThreadCount; i++)
    {
        if (MainSitesTaskList[irWhichMainTask, i] == null)
        {
            irFinishedLast = i;
            break;
        }
        if (MainSitesTaskList[irWhichMainTask, i].IsCompleted == true)
        {
            irFinishedLast = i;
            break;
        }
    }

    for (int i = 0; i < irPerMainSiteThreadCount; i++)
    {
        if (MainSitesTaskList[irWhichMainTask, i] != null)
            if (MainSitesTaskList[irWhichMainTask, i].IsCompleted == false)
            {
                irActiveThreadCount++;
            }
    }

    if (irFinishedLast > -1)
    {
        var newTask = Task.Factory.StartNew(() =>
        {
            fcStartSubPageCrawl(srMainSiteURL, srMainSiteId, irWhichMainTask);
        });
        lock (lockerMainSitesArray)
        {
            if (MainSitesTaskList[irWhichMainTask, irFinishedLast] != null)
                MainSitesTaskList[irWhichMainTask, irFinishedLast].Dispose();
            MainSitesTaskList[irWhichMainTask, irFinishedLast] = newTask;
        }
    }

    Thread.Sleep(250);

    srQuery = "myquery";
    using (DataSet dsTemp = DbConnection.db_Select_Query(srQuery))
    {
        if (dsTemp != null)
            if (dsTemp.Tables.Count > 0)
                if (dsTemp.Tables[0].Rows.Count == 0)
                {
                    break;
                }
    }
}

最佳答案

真的没有“父”线程这样的东西。一个线程启动另一个线程,但它们之间没有特定的关系。例如,起始线程可以在没有任何新线程死亡的情况下终止。

起始线程休眠绝对不会影响任何其他线程。

关于c# - 父线程休眠时子线程也休眠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7860009/

相关文章:

wpf - 有没有办法获取窗口的所有 BindingExpression 对象?

c++ - C++多线程并行编程锁

C# 单击按钮时从字典中随机输入

c# - 更新云队列中的消息内容时出现异常

c# - 如何从串口读取设备数据

c# - WPF 现代 UI 中的页面导航

c++ - 0 作为 std::condition_variable::wait_for 中的超时

c# - .NET Generic 集合在多线程环境中是否更慢

c# - 使用 ImageSharp 从 byte[] 创建图像

c# Asp.NET MVC 使用 FileStreamResult 下载 excel 文件