是否有任何替代方法System.Windows.Forms.Application.DoEvents()来刷新不使用System.Windows.Forms命名空间的事件队列?如果没有,可以在Web服务中使用上述方法/命名空间.
Application.DoEvents用于在阻止表单绘制事件被引发的进程中重绘表单元素,因此我不能在Web服务中使用.在Web服务中,您没有用户界面,没有窗口,也没有消息循环,因此DoEvents不会执行任何操作.
为什么您认为需要在Web服务中使用Application.DoEvents?
您很可能正在寻找多线程.如果您需要并行执行多项操作,则应该使用线程.
编辑请参阅ctackes帖子了解更多信息
正如Nathan指出的那样,DoEvents实际上只是循环Windows消息泵,导致队列中的顶部消息被转换和分派.在Web服务中,它不太可能做任何事情(除非您使用Windows消息进行IPC或一些古怪的事情).
如果你有一个线程窃取太多调度程序量的问题,你可以调用Thread.Sleep(0)强制调用线程屈服,直到下一个调度程序打勾,这可能会给你的其他饥饿线程更多的机会运行,特别是如果他们的优先级相同或更低.
尽管如此,如果你有饥饿感,这很有帮助,你很可能需要重新编写代码来防止这种情况,而不是试图通过调度程序产生来修复它.