private void StartMessageQueueProcessing()
{
Task.Run(async () =>
{
while (IsOnline)
{
while (!MessageQueue.IsEmpty)
{
RegisteredClientMessageQueueItem item;
if (!MessageQueue.TryPeek(out item)) break;
if (!item.IsSent)
{
item.IsSent = true;
WriteQueue.Enqueue(item.SerializedMessage);
}
else
{
if (!item.IsDelivered) break;
if (!MessageQueue.TryDequeue(out item)) break;
}
}
await Task.Delay(10);
}
});
}