【问题标题】:Can background workers run even when the foreground is in a tight loop?即使前台处于紧密循环中,后台工作人员也可以运行吗?
【发布时间】:2022-11-02 05:34:20
【问题描述】:

我有一个后台工作人员正在做它的事情。在前台,我有一个紧凑的 while 循环,它只查看要退出的局部变量。局部变量由后台工作人员触发的事件处理程序设置。

我的想法是我需要调用 sleep 以允许后台线程运行,但事实并非如此。为什么这行得通?

这是一个用于测试目的的控制台应用程序,因此没有 GUI 线程。

        while (true)
        {
            //System.Threading.Thread.Sleep(50);

            /* Get out if scripts are finished. */
            if (!m_NfcScriptRunning)
                break;
        }

问候, 李

【问题讨论】:

    标签: c# backgroundworker


    【解决方案1】:

    我的想法是我需要调用 sleep 以允许后台线程运行,但事实并非如此。为什么这行得通?

    因为BackgroundWorker 本质上是一个单独的线程。

    【讨论】:

      【解决方案2】:

      单独线程的整个想法是代码并行运行,所以不,您不必使用 Thread.Sleep,因为它只会使您使用它的“前台”线程休眠。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多