当前位置:  开发笔记 > 编程语言 > 正文

对于Web服务,Application.DoEvents()是否有任何替代方法

如何解决《对于Web服务,Application.DoEvents()是否有任何替代方法》经验,为你挑选了2个好方法。

是否有任何替代方法System.Windows.Forms.Application.DoEvents()来刷新不使用System.Windows.Forms命名空间的事件队列?如果没有,可以在Web服务中使用上述方法/命名空间.



1> Nathan W..:

Application.DoEvents用于在阻止表单绘制事件被引发的进程中重绘表单元素,因此我不能在Web服务中使用.在Web服务中,您没有用户界面,没有窗口,也没有消息循环,因此DoEvents不会执行任何操作.

为什么您认为需要在Web服务中使用Application.DoEvents?

您很可能正在寻找多线程.如果您需要并行执行多项操作,则应该使用线程.

编辑请参阅ctackes帖子了解更多信息



2> ctacke..:

正如Nathan指出的那样,DoEvents实际上只是循环Windows消息泵,导致队列中的顶部消息被转换和分派.在Web服务中,它不太可能做任何事情(除非您使用Windows消息进行IPC或一些古怪的事情).

如果你有一个线程窃取太多调度程序量的问题,你可以调用Thread.Sleep(0)强制调用线程屈服,直到下一个调度程序打勾,这可能会给你的其他饥饿线程更多的机会运行,特别是如果他们的优先级相同或更低.

尽管如此,如果你有饥饿感,这很有帮助,你很可能需要重新编写代码来防止这种情况,而不是试图通过调度程序产生来修复它.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有