如何查找经过的时间间隔

时间:2017-06-06 14:00:36

标签: c++-cli

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;

    }


}

我收到此错误:

  

System::DateTimefloat不存在合适的转化功能

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

2 个答案:

答案 0 :(得分:2)

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周期来通过冗余循环。放心吧!

答案 1 :(得分:1)

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而言。