【问题标题】:How to Call A Method after certain time has passed in C# [duplicate]如何在C#中经过一定时间后调用方法[重复]
【发布时间】:2018-01-04 01:10:56
【问题描述】:

我试图在一段时间(15 秒)结束后调用这个 if 语句中的一个方法,但它似乎根本不起作用,没有打印出方法中的文本。我将如何去做,我曾尝试研究秒表的工作原理,但它似乎不起作用。感谢您的帮助。

我试过这段代码

    Stopwatch watch = Stopwatch.StartNew();

    if (watch.Elapsed.TotalMilliseconds == 15)
    {
       Method();
    }

【问题讨论】:

  • 这似乎是XY problem。告诉我们为什么(你认为)你需要这个,你想要达到的最终目标是什么?
  • 秒表就是它——它停止时间。它没有神奇地执行代码。你的 watch.Elapsed.TotalMilliseconds 可能是 0.000001 左右 - 而不是 15。如果你想强制你的程序休眠一点,你可能想要使用 Thread.Sleep() ,否则你需要看这里:Timer with callback。它在底部有一些示例。

标签: c# methods stopwatch


【解决方案1】:

Task 是你所需要的

Task.Delay(new TimeSpan(0, 0, 15)).ContinueWith(o => { Method(); });

更多关于异步编程here

【讨论】:

  • 这就是我一直在寻找的。那里最优雅的解决方案。
【解决方案2】:

您尝试做的是暂停执行一小会儿,然后调用该方法。 最简单的方法是:

Thread.Sleep(TimeSpan.FromSeconds(15));
Method();

但请注意,您的线程在此期间没有执行任何操作,因此更好的方法是使用 TPL 和 async 方法,但根据您的需要,上面的代码可能会:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2013-06-15
    相关资源
    最近更新 更多