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::DateTime
到float
不存在合适的转化功能
我也试过了TimeSpan
,但它没有用。有更好的方法吗?
答案 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而言。