C#延迟 - 在程序执行继续时输出到控制台的延迟

时间:2017-02-14 19:59:48

标签: c#

我正试图找到一种方法,使程序不会暂停,但是它们会延迟执行某些任务。即我试图延迟输出'Hello'到控制台10秒,但程序将继续执行程序的其余部分。

5 个答案:

答案 0 :(得分:5)

使用TPL:

static void Main(string[] args)
{
    Console.WriteLine("Starting at " + DateTime.Now.ToString());

    Task.Run(() =>
    {
        Thread.Sleep(10000);
        Console.WriteLine("Done sleeping " + DateTime.Now.ToString());
    });

    Console.WriteLine("Press any Key...");

    Console.ReadKey();

}

输出:

Starting at 2/14/2017 3:05:09 PM
Press any Key...
Done sleeping 2/14/2017 3:05:19 PM

请注意,如果您在10秒前按键,它将退出。

答案 1 :(得分:2)

有两种模拟延迟的典型方法:

  • 异步任务:Thread.Sleep
  • 或阻止活动: public static void Main(string[] args) { Both(); } static void Both() { var list = new Task [2]; list[0] = PauseAndWrite(); list[1] = WriteMore(); Task.WaitAll(list); } static async Task PauseAndWrite() { await Task.Delay(2000); Console.WriteLine("A !"); } static async Task WriteMore() { for(int i = 0; i<5; i++) { await Task.Delay(500); Console.WriteLine("B - " + i); } }

你好像是指第一种情况。

这是一个例子

B - 0
B - 1
B - 2
A !
B - 3
B - 4

输出

Set ConfigWkb = ActiveWorkbook
Set ConfigWkst = ConfigWkb.ActiveSheet

Set UserRoleWkb = Workbooks.Open("C:\Users\cs\Desktop\Ar.xlsx")
Set UserRoleWkst = UserRoleWkb.Sheets("RS Users")

答案 2 :(得分:1)

开始一个新主题:

Task.Factory.StartNew(new Action(() =>
{
    Thread.Sleep(1000 * 10); // sleep for 10 seconds
    Console.Write("Whatever");
}));

答案 3 :(得分:1)

您可以使用Task.DelayContinueWith方法的组合:

Task.Delay(10000).ContinueWith(_ => Console.WriteLine("Done"));

答案 4 :(得分:0)

您可以使用&#39; Thread.Sleep(10000);&#39;

请参阅: https://msdn.microsoft.com/en-us/library/d00bd51t(v=vs.110).aspx