请教线程优先级问题

nk0704 2012-12-12 10:47:49
我写了一个基于对话框的程序,在初始化时启用了一个线程,然后做了个运算的测试,不过运行以后 当鼠标在对话框中有动作(移动等)时我写的那个线程便会停止,是不是我的没有设置优先级的原因,我用的是AfxBigenThread(DD,this);
求各位大大帮帮忙,应该如何完成线程才能做得好些不容易出错,还有线程挂起的问题
我最终是要用在AD采集程序个用的 我想的是在线程里做个精度高的定时。。
膜拜膜拜!!!!
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2012-12-12
  • 打赏
  • 举报
回复
要看你的线程函数中怎么写的?
快乐鹦鹉 2012-12-12
  • 打赏
  • 举报
回复
你怎么确认线程停止的呢?如果真是子线程,不应该这样子的。 贴出线程的创建和启动代码,以及线程的核心代码,以及鼠标移动时的处理
nk0704 2012-12-12
  • 打赏
  • 举报
回复
我不太明白 能说的再细细点不!????
Eleven 2012-12-12
  • 打赏
  • 举报
回复
线程里就不要操作窗口上的控件了吧,改用发送消息到UI线程,在UI线程的自定义消息响应函数中去更新控件信息。
nk0704 2012-12-12
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
你怎么确认线程停止的呢?如果真是子线程,不应该这样子的。 贴出线程的创建和启动代码,以及线程的核心代码,以及鼠标移动时的处理
我在线得程函数里写了个定时函数 在调用的函数里进行自加 然后用一个控件显示出来 运行的时候如果鼠标在对话框上移动的时候就不进行自加了。。。 在头文件里是 Static UINT MyThread(LPVOID lparam); 初始化里用 AfxBigenThread(MyThread,this); 下面是 UINT CMy123Dlg::MyThread(LPVOID lparam) { CMy123Dlg* pThread=(CMy123Dlg*)lparam; if(pThread==NULL) return 0; LARGE_INTEGER litmp; LONGLONG QPart1,QPart2; double dfMinus, dfFreq, dfTim; QueryPerformanceFrequency(&litmp); dfFreq = (double)litmp.QuadPart; QueryPerformanceCounter(&litmp); QPart1 = litmp.QuadPart; while(1) { do { QueryPerformanceCounter(&litmp); QPart2 = litmp.QuadPart; dfMinus = (double)(QPart2-QPart1); dfTim = dfMinus / dfFreq; }while(dfTim<0.02); Thread->Dia(); } } BOOL CMy123Dlg::Dia() { x=x+1; str.Format("%d",x); m_1.Setwindowtext(str); } 别的就没有了刚学VC求多多关照;

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧