首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DLL中的DoEvents

DLL中的DoEvents
EN

Stack Overflow用户
提问于 2008-11-11 18:14:56
回答 4查看 4.3K关注 0票数 1

您知道如何从C# DLL调用DoEvents吗

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-11 18:18:16

不要这样做。当你是控制事件循环的应用程序时,这已经够粗略的了;从DLL中发送消息只会增加你最终命中代码的风险,因为天真的程序员不会让代码安全重入。

票数 15
EN

Stack Overflow用户

发布于 2008-11-11 18:19:04

你是说System.Windows.Forms.Application.DoEvents()吗?

票数 3
EN

Stack Overflow用户

发布于 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)。

你能在场景中添加更多的上下文吗?可以做的事情有很多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/281714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档