gpt4 book ai didi

c# - 事件引发的假设

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:59 24 4
gpt4 key购买 nike

想象一下下面的类:

class A
{
public event EventHandler AnyEvent;
}

您创建类 A 的实例,并附加一些事件处理程序。现在,如果 AnyEvent 被引发,我不会假设事件处理程序是在另一个线程上执行的,而不是我创建对象的线程。如果您在 GUI 线程上创建对象,并且事件处理程序对 GUI 元素执行操作,那么这将是最重要的。这将迫使我使用适当的调用模式。

如果你使用定义事件的接口(interface),它真的变得邪恶了:

interface B
{
event EventHandler SomeEvent;
}

现在一个实现可以从原始线程引发事件,下一个从第二个线程引发事件。这可能会导致您的应用程序成功地与一个实现一起工作,而与另一个实现一起失败。

我认为编码应该始终是透明的——这不是!如果我不创建另一个线程,我不认为我的方法是从我的 home 线程以外的任何其他线程执行的。

有没有我没有考虑到的方面?任何会覆盖我的假设的方面?

最佳答案

事件没有魔法。事件在引发它们的线程上处理。它与创建对象的线程无关。

关于c# - 事件引发的假设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621439/

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