void Run()
{
while (dispatcher.active) {
ITask task = null;
DispatcherQueue queue = null;
try {
task = dispatcher.Dequeue (ref currentQueue, out queue);
} catch (Exception) { //DispatcherQueue is failing, what should we do?
//dispatcher.TaskDone (task, queue, null);
Thread.Sleep (500);
}
if (task == null)
continue;
queue.RunTask (task);
}
}