Я знаю, что это действительно простые вещи, но я изо всех сил пытаюсь обдумать это.
Хорошо, у меня есть метод, который я хочу запустить:
public static void DelegateTest(string testStuff)
{
for (int i = 0; i < 4; i++)
{
Console.WriteLine(testStuff);
}
}
Затем, вне области действия этого метода (но в рамках моего класса), я определяю моего делегата с тем же типом вывода и входными параметрами, что и у моего метода:
public delegate void myDelegate(string test);
Я создаю экземпляр моего делегата так:
myDelegate md = new myDelegate(DelegateTest);
Затем я могу запускать свой метод столько раз, сколько захочу, с помощью BeginInvoking делегата, и методы будут выполняться рядом в отдельных потоках.
md.BeginInvoke("Hello World", null, null);
md.BeginInvoke("Hello World Again", null, null);
md.BeginInvoke("Hello World A Third Time", null, null);
Как мне теперь определить событие и только асинхронно запускать мой метод, когда событие происходит? Кроме того, каковы ограничения на то, что может быть событие? Можно ли более или менее все, что происходит на моем компьютере, определить как событие или только определенные вещи?
Редактировать: Скажем, например, что после выполнения вышеизложенного я хочу создать событие и определить это событие как «пробел был нажат». Каждый раз, когда нажимается пробел, это событие происходит. Когда происходит событие, я хочу запустить свой метод асинхронно, я не хочу запускать свой метод асинхронно, если пробел не был нажат.
Как бы я поступил об этом?