Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Печать буфера по мере накопления (flush)


Автор: artskif 6.11.2009, 11:58
Уважаемые программисты. Кто сталкивался с проблемой "постепенного" вывода данных на экран клиента? К примеру: Есть клиент который хочет получить большой объем данных, этот объем данных довольно-таки долго обрабатывается. Что бы клиенту не ждать обработки всего потока, было бы разумным постепенно выводить данные на экран клиента, что бы клиент по мере обработки уже смог работать с информацией.

Мне на выбор предложили 2 способа:
1) Ajax
2) Response.Flush
Пример кода для Response.Flush
Код

            Dim oStringWriter As New System.IO.StringWriter
            Dim wr As New HtmlTextWriter(oStringWriter)

            'header
            wr.AddAttribute("align", "center")
            wr.AddAttribute("style", "font-size:12.0pt;font-family:Tahoma;font-weight:bold")
            wr.RenderBeginTag("P")
            wr.WriteLine("Привет всем")
            wr.RenderEndTag() ' P

            wr.AddAttribute("align", "left")
            wr.AddAttribute("style", "font-size:10.0pt;font-family:Tahoma;font-weight:bold")
            wr.RenderBeginTag("P")
            wr.WriteLine("Это пример геморноя с буфером вывода")
            wr.RenderEndTag() ' P

            If dt.Rows.Count > 0 Then
                dgReport.RenderControl(wr) 'Выводим таблицу
            Else
                wr.WriteLine("<TABLE><TR><TD></TD></TR></TABLE>")
            End If

            Response.Write(oStringWriter.ToString())
            Response.Flush()
            Response.End()


Оба способа являются довольно таки геморными. Может кто-то уже решал подобную задачу и располагает необходимой информацией. Подскажите пожалуйста, как это можно проще сделать. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)