关于Cursor.Current = Cursors.WaitCursor;的问题!

shmilylee 2010-08-10 03:15:31
在写程序时正常是使用
Cursor.Current = Cursors.WaitCursor;和Cursor.Current = Cursors.Default;
我之前一直都没注意
现在发现在等待时间比较长,中间光标还在转圈的时候
我一阵狂点其他按钮,居然是有反应的,点多了我造成我系统内存溢出

有什么办法让光标出现的时候不能点其他按钮(类似于模式窗口)?
...全文
1090 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyondma 2010-08-11
  • 打赏
  • 举报
回复
在光标出现的时候这个不好判断,但是如果光标状态是你函数调出来的。那你完全可以在应用在某个状态的时候禁用UI。这个是没问题的。
88csdn 2010-08-11
  • 打赏
  • 举报
回复
可以看出你的数据加载是在UI线程中做的,实际点击按钮时,消息已经进队列了,但由于一直忙于加载数据,所以不会处理。当数据加载完,会处理所有这些消息,就出现了这样的现象。
可以在加载完数据之后立即PeekMessage将点击类消息移除试试。
shmilylee 2010-08-11
  • 打赏
  • 举报
回复
Cursor.Current = Cursors.WaitCursor会阻塞其他按钮的消息,之行完的时候才会触发其他按钮的时间
我实验的情况是这样的
Cursor.Current = Cursors.WaitCursor;
加载数据之类的操作
Cursor.Current = Cursors.Default;

当在加载数据的过程中点击其他按钮,不会有任何反应,消息被阻塞了
但是一旦完成加载数据的过程,之前点击的所有操作都会之行
Cursors.WaitCursor == Cursor.Current;这句话始终都不会==true
ps:在不开线程的情况下!
世外涛缘 2010-08-10
  • 打赏
  • 举报
回复
Cursor只是界面的一个用户反馈,告诉用户当前忙或者闲的状态。
并不能拒绝所有的用户操作。
不过可以这样,根据Cursors.WaitCursor == Cursor.Current这个条件来判断是否执行用户的操作。
即在按钮中用它来做个逻辑判断。

不知道我说清楚了没有。
iqlife 2010-08-10
  • 打赏
  • 举报
回复
Cursor.Current = Cursors.WaitCursor;和Cursor.Current = Cursors.Default;
你的程序运行后面那条语句了??
调试看看...
儿大不由爷 2010-08-10
  • 打赏
  • 举报
回复
两种方法
1. 按钮的消息响应里判断状态
2. 让计算发生在你的按钮的消息处理函数中,这样就不会响应其他的点击消息了

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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