是否可以忽略某些功能的“线程睡眠”?

时间:2019-06-25 23:40:22

标签: c#

因此,我目前正在开发C#Forms App,在该Forms App中,我有一个Backgroundworker,它循环遍历具有DataGridViewRow的列表,并为每行创建一个线程。在该线程中,我会在用户输入的时间内一直休眠程序,但是我想在线程处于休眠状态时更新该线程中的字符串,因此基本上可以防止一个函数在线程自身内部处于休眠状态。有可能吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是一个调用任务的示例,该任务说“你好”,然后睡眠5秒钟,然后说“再见”。但是,当它处于休眠状态时,它将启动另一个执行简单倒计时的任务。

也许这对您有帮助:

private static void Main()
{
    var sleepTime = TimeSpan.FromSeconds(5);

    var sleepyTask = Task.Factory.StartNew(() =>
    {
        Console.WriteLine("I'm going to sleep");

        // Before sleeping, launch a countdown timer
        Task.Factory.StartNew(() =>
        {
            Countdown(sleepTime);
        });

        // Now go to sleep
        Thread.Sleep(sleepTime);

        Console.WriteLine("I'm back!");
    });

    sleepyTask.Wait();

    GetKeyFromUser("\nDone! Press any key to exit...");
}

private static void Countdown(TimeSpan time)
{
    var seconds = time.TotalSeconds;

    // Write something once per second for 'seconds' seconds
    while (seconds > 0)
    {
        Console.WriteLine(seconds--);
        Thread.Sleep(TimeSpan.FromSeconds(1));
    }
}