Очередь приоритетов обычно реализуется в виде кучи. Сортировка с использованием кучи выполняется в среднем медленнее, чем быстрая сортировка, за исключением того, что у быстрой сортировки худшая производительность. Кроме того, кучи - это относительно тяжелые структуры данных, так что накладных расходов больше.
Я бы порекомендовал сортировать в конце.
Не полный ответ, но объяснение значений тайм-аута, приведенных ниже, может быть полезным.
Если вы посмотрите в нужном месте, вы можете получить события канала и изменить свой тест, чтобы знать о них. Connect - это логический метод службы WCF. Я использовал svcutil для создания прокси-класса с использованием асинхронных методов.
private StateManagerClient _stateManagerClient;
private InstanceContext _site;
public New()
{
_site = new InstanceContext(this);
_serviceClient = new ServiceClient();
_serviceClient.ConnectCompleted += ServiceClient_ConnectCompleted;
}
private void ServiceClient_ConnectCompleted(object sender, ConnectCompletedEventArgs e)
{
//Bind to the channel events
foreach (IChannel a in _site.OutgoingChannels) {
a.Opened += Channel_Opened;
a.Faulted += Channel_Faulted;
a.Closing += Channel_Closing;
a.Closed += Channel_Closed;
}
}
private void Channel_Opened(object sender, EventArgs e)
{
}
private void Channel_Faulted(object sender, EventArgs e)
{
}
private void Channel_Closing(object sender, EventArgs e)
{
}
private void Channel_Closed(object sender, EventArgs e)
{
}
Надеюсь, это даст вам некоторую ценность.