我试图了解在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; }
}
}
答案 0 :(得分:1)
在您的代码中,您只需使用
订阅活动evtClass.VariableLoaded += c_VariableLoaded;
但没有人打电话给这个事件。有些东西必须从evtClass中调用它,因为main中的事件处理程序可以解决。
例如,考虑查看Windows窗体事件。您正在使用某个事件处理程序订阅Button Click事件 - 就像在您的主要事件中一样。但是你必须按下按钮才能运行处理程序的代码。
所以它在你的代码中 - 你订阅了事件,但事件本身永远不会被提出。要从代码中提高它,您应该使用您构造的一些参数调用OnVariableLoaded
。
考虑查找一些事件示例 - 例如,进度条更新或PropertyChanged模式。