(Windows)我可以让程序在 运行 时更改或停止吗?
(Windows)Can I get the program to be changed or be stopped while it is running?
我现在正在用 C++ 编写一个 win32 程序。
我想在window上展示我的运行过程,就像时间在流逝
比如这段代码
int a=0;
for(int i=0;i<10;i++)
{
a++;//The change in "a" can be seen on the window.
Sleep(1*1000);
}
但我发现如果我想显示这个过程,比如点击一个按钮,屏幕上会出现一个不断变化的数字,那么程序需要一直 运行。在这一点上,我没有办法做任何其他事情,比如点击另一个按钮。
所以我意识到我需要一个可以中断当前进程的操作。但是我查阅了很多资料,发现只有Linux系统的fork()函数可以满足我的需求。但是我现在正在使用 Windows,那么还有什么其他方法可以实现这一点呢?
真诚期待您的回复。
您想创建一个包含 SetTimer. Then watch for the WM_TIMER 条消息的计时器,然后更新屏幕。这是实现您所描述内容的标准方法。
创建一个线程并使用原子。
std::atomic_int a_t(0);
auto do_a = [](std::atomic_int* pA)
{
for (int i = 0;i < 10;i++)
{
(*pA)++;
std::this_thread::sleep_for(1s);
}
};
thread t(do_a, &a_t);
t.join();
cout << a_t.load(memory_order::memory_order_relaxed);
任何时候你需要获取 a_t
的值,只需调用 a_t.load(memory_order::memory_order_relaxed);
希望对您有所帮助
我现在正在用 C++ 编写一个 win32 程序。 我想在window上展示我的运行过程,就像时间在流逝
比如这段代码
int a=0;
for(int i=0;i<10;i++)
{
a++;//The change in "a" can be seen on the window.
Sleep(1*1000);
}
但我发现如果我想显示这个过程,比如点击一个按钮,屏幕上会出现一个不断变化的数字,那么程序需要一直 运行。在这一点上,我没有办法做任何其他事情,比如点击另一个按钮。
所以我意识到我需要一个可以中断当前进程的操作。但是我查阅了很多资料,发现只有Linux系统的fork()函数可以满足我的需求。但是我现在正在使用 Windows,那么还有什么其他方法可以实现这一点呢? 真诚期待您的回复。
您想创建一个包含 SetTimer. Then watch for the WM_TIMER 条消息的计时器,然后更新屏幕。这是实现您所描述内容的标准方法。
创建一个线程并使用原子。
std::atomic_int a_t(0);
auto do_a = [](std::atomic_int* pA)
{
for (int i = 0;i < 10;i++)
{
(*pA)++;
std::this_thread::sleep_for(1s);
}
};
thread t(do_a, &a_t);
t.join();
cout << a_t.load(memory_order::memory_order_relaxed);
任何时候你需要获取 a_t
的值,只需调用 a_t.load(memory_order::memory_order_relaxed);
希望对您有所帮助