怎么解决最大响应时间

weikeni19 2017-03-28 03:01:02
我有个问题想请教下 给个思路就行 比如有一个游戏读盘程序(就是将游戏的内容存入内存) 或者在网页上播放电影有一段缓冲(读的程序将内容存入内存) 编程怎么解决最大响应时间问题?最大响应时间的概念就是:从开始对于这个消息的响应,到退出消息处理函数这段时间,被称作响应时间。 谢谢!
...全文
730 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
plaingenius 2017-03-30
  • 打赏
  • 举报
回复
我也才发现,我同事做了十年开发,做c#的,竟然对多线程及消息处理都不了解
绿领巾童鞋 2017-03-29
  • 打赏
  • 举报
回复
如果是WINFORM,只要不堵塞 界面线程 占用 就不会出现未响应的情况,除非CPU持续几十分钟100%。你的那个 按钮 执行的操作 全部都是跑 在 界面线程 内,当然卡住了。
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 21 楼 shingoscar 的回复:
搞半天你还没明白 所谓消息处理,windows提供了一组函数,比如GetMessage,PeekMessage,TranslateMessage,DispatchMessage等等 不是什么特定的函数 常规的窗口都有个叫WndProc的回调用来接收消息,C#的Form里也有 这个只是约定俗成的,但不是绝对的,有些消息比如退出就需要在主循环里接收
谢谢 场地太滑 我看出来了 1比0输了
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
搞半天你还没明白 所谓消息处理,windows提供了一组函数,比如GetMessage,PeekMessage,TranslateMessage,DispatchMessage等等 不是什么特定的函数 常规的窗口都有个叫WndProc的回调用来接收消息,C#的Form里也有 这个只是约定俗成的,但不是绝对的,有些消息比如退出就需要在主循环里接收
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 19 楼 shingoscar 的回复:
[quote=引用 18 楼 weikeni19 的回复:] [quote=引用 16 楼 shingoscar 的回复:] [quote=引用 15 楼 weikeni19 的回复:] [quote=引用 13 楼 shingoscar 的回复:] 我只是举个例子,而且你的回答也看不懂
那五星红旗人 以下是消息处理函数是吧? private void button1_Click(object sender, EventArgs e) { }[/quote] 算是吧[/quote] 是不是这个函数被包含在消息处理函数中?[/quote] 是的[/quote] 那最后一个问题 :消息处理函数 在C#里是什么名字呢?
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
引用 18 楼 weikeni19 的回复:
[quote=引用 16 楼 shingoscar 的回复:] [quote=引用 15 楼 weikeni19 的回复:] [quote=引用 13 楼 shingoscar 的回复:] 我只是举个例子,而且你的回答也看不懂
那五星红旗人 以下是消息处理函数是吧? private void button1_Click(object sender, EventArgs e) { }[/quote] 算是吧[/quote] 是不是这个函数被包含在消息处理函数中?[/quote] 是的
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 16 楼 shingoscar 的回复:
[quote=引用 15 楼 weikeni19 的回复:] [quote=引用 13 楼 shingoscar 的回复:] 我只是举个例子,而且你的回答也看不懂
那五星红旗人 以下是消息处理函数是吧? private void button1_Click(object sender, EventArgs e) { }[/quote] 算是吧[/quote] 是不是这个函数被包含在消息处理函数中?
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 16 楼 shingoscar 的回复:
[quote=引用 15 楼 weikeni19 的回复:] [quote=引用 13 楼 shingoscar 的回复:] 我只是举个例子,而且你的回答也看不懂
那五星红旗人 以下是消息处理函数是吧? private void button1_Click(object sender, EventArgs e) { }[/quote] 算是吧[/quote] 什么叫 算是吧? 好像口气当中有一点不对劲的味道 什么意思?
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
引用 15 楼 weikeni19 的回复:
[quote=引用 13 楼 shingoscar 的回复:] 我只是举个例子,而且你的回答也看不懂
那五星红旗人 以下是消息处理函数是吧? private void button1_Click(object sender, EventArgs e) { }[/quote] 算是吧
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 13 楼 shingoscar 的回复:
我只是举个例子,而且你的回答也看不懂
那五星红旗人 以下是消息处理函数是吧? private void button1_Click(object sender, EventArgs e) { }
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 13 楼 shingoscar 的回复:
我只是举个例子,而且你的回答也看不懂
好吧 我大致是理解了
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
我只是举个例子,而且你的回答也看不懂
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 9 楼 shingoscar 的回复:
[quote=引用 2 楼 weikeni19 的回复:] 比如winform 有一个按钮控件button 里面的程序是这样的 这段程序会导致未响应 private void button1_Click(object sender, EventArgs e) { new Thread(() => { int i = 0; while (true) { i++; if (i > 5000000000) return; } }).Start(); }
[/quote] 五星红旗人 我的回答正确吗?
wanghui0380 2017-03-28
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/zh-cn/library/dd235606.aspx
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 9 楼 shingoscar 的回复:
[quote=引用 2 楼 weikeni19 的回复:] 比如winform 有一个按钮控件button 里面的程序是这样的 这段程序会导致未响应 private void button1_Click(object sender, EventArgs e) { new Thread(() => { int i = 0; while (true) { i++; if (i > 5000000000) return; } }).Start(); }
[/quote] 你的意思是只能用线程去实现 因为线程不会产生未响应的情况是吗?因为线程是前台程序 会一直运行下去 直到运行完毕?哪怕时间超过了系统的最大响应时间?它还是会一直运行下去是吗?
Poopaye 2017-03-28
  • 打赏
  • 举报
回复
引用 2 楼 weikeni19 的回复:
比如winform 有一个按钮控件button 里面的程序是这样的 这段程序会导致未响应 private void button1_Click(object sender, EventArgs e) { new Thread(() => { int i = 0; while (true) { i++; if (i > 5000000000) return; } }).Start(); }
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
尽义务我还是说一下 1.长时间运行的任务,需要放在线程或后台去执行,避免阻塞主线程 2.如果需要和主线程交互,你可以invoke,或使用现在的新语法async/await 3.无论是线程还是新语法Task,都有对其的超时设置手段。你在那里去设置就好
后台好像不行 你的意思是只能用线程去实现 因为线程不会产生未响应的情况是吗?因为线程是前台程序 会一直运行下去 直到运行完毕?哪怕时间超过了系统的最大响应时间?它还是会一直运行下去是吗?
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
尽义务我还是说一下 1.长时间运行的任务,需要放在线程或后台去执行,避免阻塞主线程 2.如果需要和主线程交互,你可以invoke,或使用现在的新语法async/await 3.无论是线程还是新语法Task,都有对其的超时设置手段。你在那里去设置就好
可以在代码里设置程序响应时间? 那么当退出应用程序后 系统的最大响应时间还是老样子?
weikeni19 2017-03-28
  • 打赏
  • 举报
回复
引用 5 楼 wanghui0380 的回复:
尽义务我还是说一下 1.长时间运行的任务,需要放在线程或后台去执行,避免阻塞主线程 2.如果需要和主线程交互,你可以invoke,或使用现在的新语法async/await 3.无论是线程还是新语法Task,都有对其的超时设置手段。你在那里去设置就好
你的第一条 使用线程但处理消息的函数还在运行中,我想还是会超时啊!就是会产生程序未响应 我是想问怎么解决程序未响应问题 我给你看个网页 里面有对未响应的概念描述 :http://tieba.baidu.com/p/652822002
wanghui0380 2017-03-28
  • 打赏
  • 举报
回复
尽义务我还是说一下 1.长时间运行的任务,需要放在线程或后台去执行,避免阻塞主线程 2.如果需要和主线程交互,你可以invoke,或使用现在的新语法async/await 3.无论是线程还是新语法Task,都有对其的超时设置手段。你在那里去设置就好
加载更多回复(4)

110,536

社区成员

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

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

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