Вы можете использовать:
Console.SetCursorPosition();
, чтобы правильно установить положение.
Вроде так:
Console.Write("Hello : ");
for(int k = 0; k <= 100; k++){
Console.SetCursorPosition(8, 0);
Console.Write("{0}%", k);
System.Threading.Thread.Sleep(50);
}
Console.Read();
Опрос может быть не лучшим решением для реализации чата - я бы посоветовал взглянуть на реализацию JQuery из COMET , которая сохраняет открытый соединение с клиентом и отправляет обновления с сервера «вниз», а также достаточно масштабируемый .
Я написал почти ТОЧНО одно и то же приложение для облегчения общения между друзьями на работе, когда различные работодатели используют драконовскую веб-фильтрацию.
Я обнаружил, что объем данных, передаваемых для этих запросов на опрос минимальна и редко приближается к 1 кб / с на пользователя, вошедшего в систему, обычно намного меньше, поскольку вы опрашиваете только 5 с.
Действительно ли пропускная способность является проблемой или вы преждевременно оптимизируете?
Я думаю, что для приложения чата вы можете использовать
Reverse Ajax относится к дизайну Ajax шаблон, который использует долгоживущий HTTP подключения для обеспечения низкой задержки связь между веб-сервером и браузер. В основном это способ отправка данных от клиента к серверу и механизм для отправки данных сервера обратно в браузер. 1
Это соединение сервер-клиент занимает одна из двух форм:
* Опрос клиента, клиент повторно запрашивает (опрашивает)
сервер и ждет ответа. * Server pushing, соединение между сервером и клиентом сохраняется открытый, сервер отправляет данные, когда доступно.
Reverse Ajax описывает реализация любого из этих модели или их комбинация. В шаблон проектирования также известен как Ajax Push, полнодуплексный Ajax и потоковая передача Ajax.
и
Request.Comet - это простой класс javascript для легкого создания кроссбраузерных приложений Comet (Reverse Ajax). Он обеспечивает передачу данных в реальном времени между клиентом и сервером и может использоваться с любым серверным языком.
В дополнение к ответу msparer, вот сообщение в блоге о скорости сообщений Comet и сравнительном анализе такой техники для приложения чата:
http://cometdaily.com/2008/10 / 30 / comet-apps-will-not-scale-equal /
If you decide not to go with the COMET approach, then I would do the same as you do, except if the queue contains several messages then they are sent all at once. This way you only poll exactly every 5 seconds and no more (and no less). Of course, with 100 people connected this still results in 20 requests per second, so you should try and optimize the server side in such a way that each request takes as little server resources (CPU/RAM/time) as possible. Caching is your friend here.
I wouldn't worry about bandwidth though because chat messages are usually very short and your requests would be tiny anyway.