您知道如何从C# DLL调用DoEvents吗
发布于 2008-11-11 18:18:16
不要这样做。当你是控制事件循环的应用程序时,这已经够粗略的了;从DLL中发送消息只会增加你最终命中代码的风险,因为天真的程序员不会让代码安全重入。
发布于 2008-11-11 18:19:04
你是说System.Windows.Forms.Application.DoEvents()吗?
发布于 2008-11-12 06:59:08
我会回应“不要”(来自dll或UI项目)。有几件事可以让库代码很好地与UI配合使用,包括您可能在UI中使用的相同的线程技巧(使用事件和/或回调)。最简单的方法是让库代码“按原样”简单地执行,如果UI恰好在工作线程上生成它,那么UI的任务就是处理任何事件并将它们(Control.Invoke/BeginInvoke)编组到UI线程以进行UI更新。
对于更复杂的场景,您可以使用同步上下文(SynchronizationContext.Current)将消息发布到UI线程(这实际上是Control.Invoke等的工作方式,但它是独立于实现的-因此WPF context可以通过WPF dispatcher)。
你能在场景中添加更多的上下文吗?可以做的事情有很多。
https://stackoverflow.com/questions/281714
复制相似问题