Помогите пожалуйста разобраться в применении EventHandler. Я написал для проверки простую консольную программу:
internal class Program
{
private class EventTest
{
private string Action { get; set; }
private string Name { get; set; }
public event EventHandler GeneralEventHandler;
public EventTest()
{
Count();
}
private void Count()
{
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
Action = $"Action {i}";
Name = $"Name {i}";
//Console.WriteLine($"{Action}\n{Name}"); //Для проверки
CustomHandler(Action, new EventArgs());
}
}
private void CustomHandler(object sender, EventArgs e)
{
GeneralEventHandler?.Invoke(this, e);
}
}
private static void Main(string[] args)
{
var events = new EventTest();
//events.Count();
events.GeneralEventHandler += Events_GeneralEventHandler;
Console.ReadKey();
}
private static void Events_GeneralEventHandler(object sender, EventArgs e)
{
Console.WriteLine(sender.ToString());
Console.WriteLine(e.ToString());
}
}
Не работает, и вообще правильно ли так делать. Так же не могу получить доступ к свойствам например:
sender.Action
e.Action;
Хотелось бы обойтись без кастомного события:
internal class Program
{
public class MyEvents : EventArgs
{
public string Action { get; set; }
public string DriveName { get; set; }
public MyEvents(string action, string driveName)
{
Action = action;
DriveName = driveName;
}
}
public class EventTest
{
public string Action { get; set; }
private string Name { get; set; }
public event EventHandler GeneralEventHandler;
public delegate void MessageReceivedEventHandler(MyEvents args);
public event MessageReceivedEventHandler MessageReceived;
public EventTest()
{
}
public void Count()
{
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
Action = $"Action {i}";
Name = $"Name {i}";
//Console.WriteLine($"{Action}\n{Name}");
OnMessageReceived(new MyEvents(Action, Name));
}
}
protected virtual void OnMessageReceived(MyEvents args)
{
MessageReceived?.Invoke(args);
}
}
private static void Main(string[] args)
{
var events = new EventTest();
events.Count();
//events.GeneralEventHandler += Events_GeneralEventHandler;
events.MessageReceived += Events_MessageReceived;
Console.ReadKey();
}
private static void Events_MessageReceived(MyEvents args)
{
Console.WriteLine(args.Action);
}
В такой реализации все работает нормально... Можно ли это сделать через EventHandler передав в Invoke this?
Виртуальный выделенный сервер (VDS) становится отличным выбором
В данный момент для прочитывания файла используется StremReader
У меня есть метод в классе, который создает список моих линийКоличество точек в одной линии может достигать 1700000 и больше
Есть база данных к которой подключается приложение через формуНа Форме есть textbox куда необходимо вписать параметры подключения к базе так...