Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Распределённые приложения и сеть > Передача MAIL частями |
Автор: Modul 10.6.2007, 20:09 | ||||
Надо передать письмо частями для отображения прогресс-бара. Это синхронная запись в поток NetworkStream. Результат: прогресс-бар быстро пролетает, а реально для записи письма (300 КБ) приходиться ждать еще 1 мин 15 сек. Как сделать, чтобы прогресс-бар соответствовал реальной записи.
2-й вариант Пробовал сделать асинхронным методом:
Результат тот же. Как-то надо отследить моменты записи частей на почтовый сервер. |
Автор: arilou 10.6.2007, 23:46 |
После writeStream.Write(dataToWrite, offset, size); попробуй поставить writeStream.Flush() т.к. поток буферизирует. |
Автор: Modul 11.6.2007, 06:57 |
Не помогло. Время тоже. Получается, что части письма (пакеты данных) бросаются в поток, а дальше запись зависит от пропускной способности сети (КБ/сек) и почтового сервера. |
Автор: arilou 11.6.2007, 12:57 |
Modul, а! тебе надо асинхронно посылать (см. Stream.BeginWrite/EndWrite). По аналогии с этой статьей - http://www.codeproject.com/cs/internet/webdownload.asp |
Автор: Modul 11.6.2007, 20:00 | ||
Пример больно мудреный ![]() Никто не спорит - нужны асинхронные методы.
Везде пишут - Вызов блокируется, пока не завершится выполнение Async. А цикл то выполняется (не блокируется). Остальные участники куда-то спрятались. Ау... |
Автор: arilou 11.6.2007, 23:38 |
Modul, че-то мудришь. Синхронный вызов блокируется, асинхронный - нет. Если не забуду, завтра попробую набодяжить примерчег. |