我有一个提供自定义事件的类:
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/