老哥们,当界面卡住的时候,怎么屏蔽鼠标和键盘

m0_37646670 2019-04-26 05:01:03
当界面长时间操作卡住的时候,鼠标和键盘消息虽然当时没反应
可界面恢复过来的时候,程序又会处理这个消息了

能在这个时候屏蔽这些消息吗
...全文
1152 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx_xyy 2019-06-06
  • 打赏
  • 举报
回复
单纯实现你的目的也是可以的,放一个和ui同线程的定时器,不断判断间隔,无论是否卡顿,每次的鼠标键盘操作都先判断,判断间隔正常,则允许,否则无效。
m0_37646670 2019-05-01
  • 打赏
  • 举报
回复
引用 18 楼 张天星 的回复:
[quote=引用 17 楼 张天星 的回复:]
[quote=引用 7 楼 m0_37646670 的回复:]
[quote=引用 1 楼 正怒月神 的回复:]
首先,长时间的任务应该异步处理。
其次,如果你实在不会,那么你点button时,先弹出一个遮罩层吧。。。。

假如点一次按钮,插入一条数据
突然网络爆炸了,客户看看界面怎么点着没反应,就疯狂连续点。。

我在点击里明明是发送完了就清空发送数据了,为啥子会出现两条同样的记录呢
[/quote]
弹出一个遮罩层,遮住了所有可以点击的按钮,你就不会连续狂点,因为狂点也点不到东西了。
不过,就像上面说的,你应该用异步解决问题,不能让程序卡住(UI界面不能卡住)[/quote]
比如你点击发送一次数据,数据清空,这些都是UI上处理,是即时的。再点击也没有信息可以发送了。
而发送的具体操作,也许要耗时很久,放在异步中处理,也需要耗时,这个没办法的事情,和前端UI没有关系。
或者就像微信聊天一样,发送的信息,会被自动写到已发送里面去,发送成功和失败,对这个信息打个X。
但是输入框里面,已经被清空了,你没有机会发送两条一模一样的信息。哪怕你手点的再快。
……
其实也不大对,正常来说,如果你发送的前有清空输入框的信息,多点应该不会发送出两条信息,你的代码有其他问题。[/quote]

大神,我想async await 做个异步UDP通讯系统,网上文章看得云里雾里啊啊 ,能给我点小例子吗
张天星 2019-05-01
  • 打赏
  • 举报
回复
引用 17 楼 张天星 的回复:
[quote=引用 7 楼 m0_37646670 的回复:] [quote=引用 1 楼 正怒月神 的回复:] 首先,长时间的任务应该异步处理。 其次,如果你实在不会,那么你点button时,先弹出一个遮罩层吧。。。。
假如点一次按钮,插入一条数据 突然网络爆炸了,客户看看界面怎么点着没反应,就疯狂连续点。。 我在点击里明明是发送完了就清空发送数据了,为啥子会出现两条同样的记录呢 [/quote] 弹出一个遮罩层,遮住了所有可以点击的按钮,你就不会连续狂点,因为狂点也点不到东西了。 不过,就像上面说的,你应该用异步解决问题,不能让程序卡住(UI界面不能卡住)[/quote] 比如你点击发送一次数据,数据清空,这些都是UI上处理,是即时的。再点击也没有信息可以发送了。 而发送的具体操作,也许要耗时很久,放在异步中处理,也需要耗时,这个没办法的事情,和前端UI没有关系。 或者就像微信聊天一样,发送的信息,会被自动写到已发送里面去,发送成功和失败,对这个信息打个X。 但是输入框里面,已经被清空了,你没有机会发送两条一模一样的信息。哪怕你手点的再快。 …… 其实也不大对,正常来说,如果你发送的前有清空输入框的信息,多点应该不会发送出两条信息,你的代码有其他问题。
张天星 2019-05-01
  • 打赏
  • 举报
回复
引用 7 楼 m0_37646670 的回复:
[quote=引用 1 楼 正怒月神 的回复:] 首先,长时间的任务应该异步处理。 其次,如果你实在不会,那么你点button时,先弹出一个遮罩层吧。。。。
假如点一次按钮,插入一条数据 突然网络爆炸了,客户看看界面怎么点着没反应,就疯狂连续点。。 我在点击里明明是发送完了就清空发送数据了,为啥子会出现两条同样的记录呢 [/quote] 弹出一个遮罩层,遮住了所有可以点击的按钮,你就不会连续狂点,因为狂点也点不到东西了。 不过,就像上面说的,你应该用异步解决问题,不能让程序卡住(UI界面不能卡住)
Tiny~ 2019-05-01
  • 打赏
  • 举报
回复
晕,回复错了帖子
Tiny~ 2019-05-01
  • 打赏
  • 举报
回复
上面写错了,一般默认是bind不是band
Tiny~ 2019-05-01
  • 打赏
  • 举报
回复
楼主你用和楼上大神说的那样用异步呢? 我也是小白,之前给一个客户做的一个查询导出excel的简单的程序也老是卡住,客户那边的数据是好多年的有好多条,后来改了下,我做的比较傻瓜的: 用backgroundworker,执行查询等操作,执行的时候,窗口上相应的loading,loading层鼠标手势可以改成忙碌状态的,查询等按钮隐藏,结果出来的时候,按钮再显示,目前用暂没问题,而且没感觉到“卡”
qq_43219594 2019-04-30
  • 打赏
  • 举报
回复
不太懂,希望有会的大神也教教我
STSeven 2019-04-29
  • 打赏
  • 举报
回复
界面卡住 就应该先解决卡住问题 而不是舍本逐末
jx315425246 2019-04-26
  • 打赏
  • 举报
回复
请理解基础知识
jx315425246 2019-04-26
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
"幂等性"是个课题,你先解决“卡住”问题。然后再考虑“幂等性",他不“卡住”俺们的代码还能运行,他都“卡住”我们的代码一样“卡住”这谈何控制





引用 楼主 m0_37646670 的回复:
当界面长时间操作卡住的时候,鼠标和键盘消息虽然当时没反应
可界面恢复过来的时候,程序又会处理这个消息了

能在这个时候屏蔽这些消息吗


幂等性是对于线程的,主介面不只是一个线程,我的理解幂等性是某种请求成级数式增长占用大量资源,进而是系统崩溃,鼠标和键盘和键盘发消息并且界面恢复过来的时候,程序又会处理这个消息了可以排除幂等性
OrdinaryCoder 2019-04-26
  • 打赏
  • 举报
回复
在插入的时候做校验一下
m0_37646670 2019-04-26
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神 的回复:
首先,长时间的任务应该异步处理。
其次,如果你实在不会,那么你点button时,先弹出一个遮罩层吧。。。。

假如点一次按钮,插入一条数据
突然网络爆炸了,客户看看界面怎么点着没反应,就疯狂连续点。。

我在点击里明明是发送完了就清空发送数据了,为啥子会出现两条同样的记录呢
m0_37646670 2019-04-26
  • 打赏
  • 举报
回复



引用 5 楼 wanghui0380 的回复:
"幂等性"是个课题,你先解决“卡住”问题。然后再考虑“幂等性",他不“卡住”俺们的代码还能运行,他都“卡住”我们的代码一样“卡住”这谈何控制


有道理
wanghui0380 2019-04-26
  • 打赏
  • 举报
回复
"幂等性"是个课题,你先解决“卡住”问题。然后再考虑“幂等性",他不“卡住”俺们的代码还能运行,他都“卡住”我们的代码一样“卡住”这谈何控制
jx315425246 2019-04-26
  • 打赏
  • 举报
回复
主线程进行循环操作时出这种情况,在循环之前可操作控件的Enabled设为 false
exception92 2019-04-26
  • 打赏
  • 举报
回复
你不应该解决界面为什么停止响应的问题么
把分全给哥 2019-04-26
  • 打赏
  • 举报
回复
任何操作都是有延时的,只不过有些可以感觉到,想想就知道不可能
正怒月神 2019-04-26
  • 打赏
  • 举报
回复
首先,长时间的任务应该异步处理。 其次,如果你实在不会,那么你点button时,先弹出一个遮罩层吧。。。。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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