如何找到经过的时间间隔

How to find elapsed time interval

void Wait(Single wait_time)
{
    Single start_time;
    Single end_time;
    Single ellapsed_time;

    ellapsed_time = 0;
    start_time = DateTime.Now.Second;
    while (ellapsed_time<=wait_time)
    {
        end_time = DateTime.Now.Second;
        ellapsed_time = end_time - start_time;
    }
}

上面的代码是用 C# 编写的,根据我的同事的说法,它可以工作。目标是告诉机器等待一段时间,然后继续。例如,当 Wait(5) 被触发时,机器不会继续运行,直到运行时间大于 5。我正在尝试在 C++/CLI 中做同样的事情。这是我的代码:

void Wait(Single wait_time) 
{
    Single start_time;
    Single end_time;
    Single ellapsed_time;


    ellapsed_time = 0;
    start_time = DateTime::Now;

    while (ellapsed_time <= wait_time) {
        end_time = DateTime::Now;
        ellapsed_time = end_time - start_time;

    }


}

我收到这个错误:

no suitable conversion function from System::DateTime to float exists

我也试过TimeSpan,但没用。有更好的方法吗?

C#

System.Threading.Thread.Sleep(5000);

C++

 #include <chrono>
 #include <thread>

 int main() {
 using namespace std::this_thread;
 using namespace std::chrono;
 sleep_until(system_clock::now() + seconds(5));
 }

以上代码将使您的应用程序休眠 5 秒。

或者我见过有人用

 Thread::Sleep(100);

就 CLI 而言。

C++/CLI

using namespace System::Threading;

void wait(int seconds)
{
    //1000 miliseconds = 1 second 
    Thread::Sleep(seconds * 1000);
}

int main()
{
    std::cout << "test1" << std::endl;
    wait(5);  // wait for 5 secs
    std::cout << "test2" << std::endl;
}

旁注,您不想浪费宝贵的 CPU 循环通过冗余循环。休息一下吧!