事件不会被事件消耗

时间:2018-03-02 07:45:10

标签: c# .net events

我试图了解在C#中筹集和消费事件。

我不能消耗我提出的事件。

你可以看看我的代码吗?感谢

class Program
{
    static void Main(string[] args)
    {
        var evtClass = new EventClass();
        evtClass.OnVariableLoaded(new EventClass.CustomEventArgs("test"));ded;
    }

    static void c_VariableLoaded(object sender, EventClass.CustomEventArgs e)
    {
        // The event is not being executed...
    }
}
public class EventClass
{
    public event EventHandler<CustomEventArgs> VariableLoaded;

    protected virtual void OnVariableLoaded(CustomEventArgs eventArgs)
    {
        VariableLoaded?.Invoke(this, eventArgs);
    }

    public class CustomEventArgs : EventArgs
    {
        public CustomEventArgs(string variable1)
        {
            Variable1 = variable1;
        }

        public string Variable1 { get; }
    }
}

1 个答案:

答案 0 :(得分:1)

在您的代码中,您只需使用

订阅活动
evtClass.VariableLoaded += c_VariableLoaded;

但没有人打电话给这个事件。有些东西必须从evtClass中调用它,因为main中的事件处理程序可以解决。

例如,考虑查看Windows窗体事件。您正在使用某个事件处理程序订阅Button Click事件 - 就像在您的主要事件中一样。但是你必须按下按钮才能运行处理程序的代码。

所以它在你的代码中 - 你订阅了事件,但事件本身永远不会被提出。要从代码中提高它,您应该使用您构造的一些参数调用OnVariableLoaded

考虑查找一些事件示例 - 例如,进度条更新或PropertyChanged模式。