gpt4 book ai didi

c - 使用线程实现进度控制

转载 作者:行者123 更新时间:2023-12-03 12:53:17 27 4
gpt4 key购买 nike

我是C语言中线程概念的新手,所以我发现很难实现这一点
在我的职能上。我有一个简单的应用程序,要在其中显示进度条
特定的地方。在一个特定的函数中,我将读取文件(在for循环中)以进行一些操作(关于我的应用程序)。在读取文件时,我想显示一个进度条,表明它正在读取文件。我知道应该使用线程的概念来完成此操作,但是我不确定如何执行此操作。

最佳答案

在主程序中创建一个工作线程,并设置执行文件处理的回调例程。
该例程还将计算完成的百分比。只要该百分比发生变化,请发布
值作为窗口消息,主线程将捕获该窗口消息并更新进度条控件。
您可以定义应用程序内部消息,例如#define MSG_PROGRESS_VALUE (WM_USER + 1)

编辑:样本,

#define MSG_PROGRESS_VALUE (WM_USER + 1)
#define MSG_WORKER_DONE (WM_USER + 2)
...
DWORD WINAPI jobroutine(LPVOID lpParameter) {
while (TRUE) {
// process files ...
// calculate new percent
if (newpercent != oldpercent) {
PostMessage(mainwnd, MSG_PROGRESS_VALUE, 0, newpercent);
oldpercent = newpercent;
}
...
}
PostMessage(mainwnd, MSG_WORKER_DONE, 0, 0);
return 0;
}
...
MainWndProc(...) {
switch (uMsg) {
...
case MSG_PROGRESS_VALUE:
// update progress bar value (lParam)
break;
...
}
...
WinMain(...) {
HANDLE worker = CreateThread(NULL, 0, jobroutine, NULL, NULL, NULL);
...
// Start classic windows message loop
...
}

关于c - 使用线程实现进度控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2550802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com