2
我設置使用下面的代碼測試控制檯應用程序:有沒有辦法「調整」事件監聽器被調用的順序?
using System;
class Program
{
static void Main(string[] args)
{
var myEventGenerator = new EventGenerator();
for (int i = 0; i < 10; i++)
new EventListener(myEventGenerator);
while (Console.ReadLine().Length == 0)
myEventGenerator.TriggerEvent();
}
}
class EventListener
{
private static int numberOfInstances = 0;
private int instanceNumber;
public EventListener(EventGenerator eg)
{
eg.EventHappened += EventHappened;
instanceNumber = numberOfInstances++;
}
void EventHappened(object sender, EventArgs e)
{
Console.WriteLine("Event Caught in Instance " + instanceNumber);
}
}
class EventGenerator
{
public event EventHandler EventHappened;
public void TriggerEvent()
{
Console.WriteLine("Event Begin");
if (EventHappened != null)
EventHappened.Invoke(this, new EventArgs());
Console.WriteLine("Event End");
}
}
和應用的輸出爲:
Event Begin
Event Caught in Instance 0
Event Caught in Instance 1
Event Caught in Instance 2
Event Caught in Instance 3
Event Caught in Instance 4
Event Caught in Instance 5
Event Caught in Instance 6
Event Caught in Instance 7
Event Caught in Instance 8
Event Caught in Instance 9
Event End
似乎事件偵聽器是基於觸發的順序上,他們訂閱的事件。
但是如果我不想讓這些事件偵聽器按照這個順序發生怎麼辦?如果我想要它是隨機的呢?或者,如果我想指定不同的順序?有沒有辦法做到這一點?
+1鏈接。在那裏執行的很好的例子描繪了代表們可能/不可能做到的事情。 –