关于“事件”的疑问,详情见问题补充我这里有一个事件每30毫秒触发一次,事件处理程序每执行一次耗时 约为 500毫秒.即正在执行的事件处理程序还未执行完毕,同一事件又触发多次.那么程序
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 04:48:04
![关于“事件”的疑问,详情见问题补充我这里有一个事件每30毫秒触发一次,事件处理程序每执行一次耗时 约为 500毫秒.即正在执行的事件处理程序还未执行完毕,同一事件又触发多次.那么程序](/uploads/image/z/6082238-38-8.jpg?t=%E5%85%B3%E4%BA%8E%E2%80%9C%E4%BA%8B%E4%BB%B6%E2%80%9D%E7%9A%84%E7%96%91%E9%97%AE%2C%E8%AF%A6%E6%83%85%E8%A7%81%E9%97%AE%E9%A2%98%E8%A1%A5%E5%85%85%E6%88%91%E8%BF%99%E9%87%8C%E6%9C%89%E4%B8%80%E4%B8%AA%E4%BA%8B%E4%BB%B6%E6%AF%8F30%E6%AF%AB%E7%A7%92%E8%A7%A6%E5%8F%91%E4%B8%80%E6%AC%A1%2C%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%E6%AF%8F%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E8%80%97%E6%97%B6+%E7%BA%A6%E4%B8%BA+500%E6%AF%AB%E7%A7%92.%E5%8D%B3%E6%AD%A3%E5%9C%A8%E6%89%A7%E8%A1%8C%E7%9A%84%E4%BA%8B%E4%BB%B6%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%E8%BF%98%E6%9C%AA%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%AF%95%2C%E5%90%8C%E4%B8%80%E4%BA%8B%E4%BB%B6%E5%8F%88%E8%A7%A6%E5%8F%91%E5%A4%9A%E6%AC%A1.%E9%82%A3%E4%B9%88%E7%A8%8B%E5%BA%8F)
关于“事件”的疑问,详情见问题补充我这里有一个事件每30毫秒触发一次,事件处理程序每执行一次耗时 约为 500毫秒.即正在执行的事件处理程序还未执行完毕,同一事件又触发多次.那么程序
关于“事件”的疑问,详情见问题补充
我这里有一个事件每30毫秒触发一次,事件处理程序每执行一次耗时 约为 500毫秒.
即正在执行的事件处理程序还未执行完毕,同一事件又触发多次.
那么程序将
1.忽略事件处理程序还未执行完毕期间触发的事件(同一事件),即这段时间的触发无效;
2.还是将 EventArgs 参数缓存起来,等待正在执行的事件处理程序执行完毕后再依次接受缓存 的 EventArgs 参数?
关于“事件”的疑问,详情见问题补充我这里有一个事件每30毫秒触发一次,事件处理程序每执行一次耗时 约为 500毫秒.即正在执行的事件处理程序还未执行完毕,同一事件又触发多次.那么程序
怎么给你说哪?实际上事件响应原理(底层的)是有程序用了setEvent,而另一个程序用了waitForSingleObject,一旦那个用waitForSingleObject得到的返回值是0,他根据if判断语句,自己去调用相应函数.所以实际情况并没有你想的那么自动化.就像一个人等另一个人的来信,如果他不去查信箱,他就永远不会去执行.
所以关键就在于代码是怎么写的,通常的事件响应是有专门一个循环函数在查看事件,事件发生就会调用相应的函数,一旦这个函数运行时间非常长,他就会导致大量的响应没有执行,因为没有人去查信箱.这就是第一种情况,第二种情况也可以完成,但需要由独立的线程去查看信箱,如果执行线程在执行中可以再存这次执行参数,这就需要你自己靠代码实现.大多数软件的可视化窗口的事件响应都是第一种,所以不要在相应事件响应里执行太多的代码,执行时间太长的要发到后台线程执行,否则就会窗口就会卡屏(无法响应任何事件,鼠标是个沙漏或者圈),如果是个无限循环,那很不幸已经死了,程序点X也关不掉,只能到进程列表里关.