我正在開發一些涉及從某個服務器讀取消息,註冊事件處理程序並依次調用處理程序的系統。如何驗證某些回調被異步調用(按順序)
我正在使用.NET 3.5,因此請注意,.NET 4或異步的解決方案不可用。
該代碼是與此類似(去掉了一些部件爲了簡明):
// Loop until receiving timeout.
while (!timedOut)
{
if ((message = connection.Receive) != null)
{
if (message.Id == Error.MessageId)
{
throw new Exception("Something wrong happened!!");
}
// This calls the event handler (if registered).
HandleEvent(message);
if (finishedEvents)
{
// Finished.
}
else
{
// If message matches the requested message.
if (message.Id == expectedEvents[index].MessageId)
{
index++;
}
// Finished processing all messages.
if (index == expectedEvents.Length)
{
finishedEvents = true;
continue;
}
}
else
{
break;
}
}
目前我有其中i有一個循環讀取消息並觸發正確的處理程序的同步(阻塞)實現。
這樣,我可以很容易地驗證事件正在按順序被解僱。
我想切換到異步實現,其中事件將異步觸發,而不是在循環中讀取它們。
如何在此實現中驗證事件是按順序接收的?有沒有解決這個問題的標準方案?
謝謝,會檢查出來。 – 2012-01-04 11:39:36