gpt4 book ai didi

c# - 不是表单时使用 InvokeRequired

转载 作者:行者123 更新时间:2023-12-03 13:22:03 25 4
gpt4 key购买 nike

我有一个事件处理程序,我想在创建对象的原始线程中处理它,这样它就不会阻塞。使用表单,很容易使用 InvokeRequired 将其强制到原始线程。但是如果你的类不是表单,你怎么做呢?

谢谢,

下午

最佳答案

这并不容易。首先,您必须在相关线程上创建某种消息接收循环。然后你需要实现 ISynchronizeInvoke以这样一种方式,它将包含要执行的委托(delegate)的消息发布到队列中,目标线程可以获取并提取该委托(delegate)并执行它。生产者-消费者模式通常对于设置它很有用。要带走的重要一点是,您不能仅仅将任何委托(delegate)编码到任何线程上。目标线程必须为此专门设计才能工作。它适用于 UI 线程,因为 Application.Run得到一个消息循环到 Control.Invoke方法使用。

关于c# - 不是表单时使用 InvokeRequired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4189520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com