如何在 C# .NET Core 3.1 中延迟某个任务

How to delay a certain task in c# .NET core 3.1

注意:我是编码菜鸟。

我正在尝试在我的应用程序 运行 中完成某项任务(例如)我希望 Console.WriteLine("Hello delay"); 到 运行 180 秒后 Console.WriteLine("Hello World!"); 是 运行,我该怎么做?

我还没有尝试过其他任何东西。

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            // I want (Console.WriteLine("Hello delay");) to run 
            // 180 seconds after (Console.WriteLine("Hello World!");) is run
            Console.WriteLine("Hello delay");
        }
    }
}

您可以休眠当前线程。

using System;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Thread.Sleep(180 * 1000);
            Console.WriteLine("Hello delay");
        }
    }
}

像这样:

static async void Main(string[] args)
{
    Console.WriteLine("Hello World!");
    
    await Task.Run(() =>
        {
            Thread.Sleep(1000);
            Console.WriteLine("Hello delay");
        });
        
    Console.WriteLine("Hello delay");
}

使用 Task.Run() 运行 任务并等待其完成。

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");

    var numSecondsDelay = 180;

    var t = Task.Run(async delegate
    {
        await Task.Delay(numSecondsDelay*1000);
        return numSecondsDelay;
    });
    t.Wait();

    Console.WriteLine("Hello delay");
}
using System;
using System.Threading; // add this
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Thread.Sleep(180000); // add this
            Console.WriteLine("Hello delay");
        }
    }
}

您可以使用以下代码延迟处理180秒。

System.Threading.Thread.Sleep(180 * 1000);