C# 事件处理

标签 c# events event-handling

我有一个提供自定义事件的类:

public delegate void ResultEvent(bool result);

public class Service : INotifyPropertyChanged
{
    public event ResultEvent Result;
}

另外两个对象有这样的引用:

public partial class SomeRandomClass
{
    private Service service;

    public SomeRandomClass()
    {
        this.InitializeComponent();

        service = new Service();
        service.Result += new ResultEvent(service_Result);
    }
}

问题是,只有最后一个创建“服务”新对象的对象才能识别事件是否被调度。如果我对先前生成的对象的“服务”执行某些操作,则必须分派(dispatch)事件,事件将在“服务”对象中引发,但不会调用处理程序。

有人知道我的问题是什么吗?

最佳答案

这听起来好像您在某处有一个静态引用,每次创建新实例时都可能被覆盖,但到目前为止您提供的代码中没有显示类似内容。您确实希望每个 Service 实例都有自己独立的处理程序集,对吗?

您能否发布一个简短但完整的程序来演示问题?基本上撕掉所有“真实”代码,直到您拥有的只是事件处理和触发。 (您可以使事件像计时器一样触发。)

关于C# 事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2289845/

相关文章:

php - 监听模型事件时无限循环

javascript - 为什么 console.log 在 Chrome 的某些网站上是一个空函数?

jquery - 与 jQuery 同步 'radiogroups'

java - 如何找出谁破坏了 KEY_TYPED 事件?

c# - 自定义 json contractresolver .net web api 在某些情况下回落到 camelcase

javascript - 在 GWT 页面上启用和禁用保存按钮

javascript - 事件发射器,对象不是函数

c# - HttpClientHandler/HttpClient 内存泄漏

c# - 在数据库中存储数组的最佳方式

c# - 创建表时应该使用什么SqlDbType?