切换窗口后程序停止运行,怎么解决?

小楫轻舟 2010-08-16 02:01:59
我在一个对话框程序里隔10秒取次数据,
不是通过定时器来解决,而是Sleep(10000)。

现在的情况是:若该程序窗口处于当前位置,则程序没问题
但我手动切换至其他窗口(比如打开IE上CSDN逛逛),再切回至该程序窗口时,
发现程序停止运行了,不知怎么解决。

还有就是电脑自动锁屏后再解屏也是这种情况,不过这种可以设置电脑不锁屏来解决,
不知有什么其他好的方法没?
...全文
1106 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿吖呆 2011-12-17
  • 打赏
  • 举报
回复
呵呵,同意楼上
孤客天涯 2010-08-17
  • 打赏
  • 举报
回复
主线程中Sleep会造成主线程堵塞,导致程序“假死”状态,建议周期性的动作采用工作线程或是定时器来完成
小楫轻舟 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 visualeleven 的回复:]

查询数据库可以放到线程中去做
[/Quote]
试过,程序还要取数据集,还有其他很多事要在线程里做,
后来设计成放在按钮事件里,然后统一把模拟点击按钮放在线程里。
我觉得不是取数据的原因。
目前的情况是想优化一下程序,其实正式运行时是一个程序在一台机子上跑,
不会出现切换窗口情况。
我想实现的是该程序在后台也能运行。
na_he 2010-08-17
  • 打赏
  • 举报
回复
开启一个单独的线程来取数据。
Eleven 2010-08-17
  • 打赏
  • 举报
回复
查询数据库可以放到线程中去做
animalgogogo 2010-08-17
  • 打赏
  • 举报
回复
把主线程给阻塞了,应该另外创建线程来工作,主线程还需要处理各种消息.
小楫轻舟 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guolaikk 的回复:]

应该是输入焦点问题
[/Quote]
如果频繁让对话框获得焦点的话,会有很多不便,不知有好的方法没?

[Quote=引用 7 楼 cnzdgs 的回复:]

你一直循环Sleep,没有处理窗口消息,窗口看上去就是“程序停止运行”了,改成用定时就没问题了。
[/Quote]
我不是直接循环,具体实现是在对话框上设一按钮"取数据"
OnBnClickedButtonGetdata()
{
//........省略
m_dbSQLServerSelect.ExecuteCommand(true); // 运行存储过程查询数据库
int nCount = m_dbSQLServerSelect.GetRecordCount(); // 取出的数据数目
if (nCount <= 0)
{
// 开启线程----模拟点击"取数据"按钮---里面设置暂停10秒
AfxBeginThread(postMsgClickButtonGetData, "取数据",THREAD_PRIORITY_BELOW_NORMAL, 0, 0, 0);
}
else
{
//.........
}
}


关于桌面屏保,隔10秒模拟移动鼠标一下,解决了
grf9527 2010-08-17
  • 打赏
  • 举报
回复
主线程阻塞,这个是正常的反映,如果要不死,用
timer()
ColdMooon 2010-08-16
  • 打赏
  • 举报
回复
发现程序停止运行了.
怎么个停止运行,程序结束了?失去响应了?还是什么情况?
cnzdgs 2010-08-16
  • 打赏
  • 举报
回复
你一直循环Sleep,没有处理窗口消息,窗口看上去就是“程序停止运行”了,改成用定时就没问题了。
野男孩 2010-08-16
  • 打赏
  • 举报
回复
Sleep()后面打个日志,看看线程正常着没。
guolaikk 2010-08-16
  • 打赏
  • 举报
回复
应该是输入焦点问题
aa65433 2010-08-16
  • 打赏
  • 举报
回复
感觉没有焦点取数据的时候卡主了可能性较大
wolffan3150 2010-08-16
  • 打赏
  • 举报
回复
感觉好像切换的时候把对话框任务挂起了,
不过对话框未获得焦点
可以隔10秒取次数据么?
wolffan3150 2010-08-16
  • 打赏
  • 举报
回复
不知道你的窗口切换是怎么做的,是退出了,还是隐藏窗口,
最好说具体点,

小楫轻舟 2010-08-16
  • 打赏
  • 举报
回复
怎么没人回答呢?

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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