[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 792
  • Last Modified:

Response.Flush();

why when i run or step trough this code, the html added to the page does not show at the moment of  Thread.Sleep?  thank you.

            placeholder.Controls.Clear();

                  string HTML = "";
                  HTML = "<table><tr><td>test</td></tr></table>";
            
                  Control objControl = this.Page.ParseControl(HTML);
                  this.placeholder.Controls.Add(objControl);


                  //Response.Clear();
                  Response.Buffer= true;
                  Response.Flush();
                  this.placeholder.Visible = true;
                  Thread.Sleep(15000);
0
alain123
Asked:
alain123
  • 3
  • 3
  • 3
  • +1
2 Solutions
 
monosodiumgCommented:
I think it's because you have flushed BEFORE you set the placeholder to visible. If it's not visible, it may not generate any HTML.
I'm assuming this is after PreRender. In it's before PreREnder, then it won't have gotten round to generating the HTML.
0
 
alain123Author Commented:
hello, i'm doing this after InOnit() ... before pre-render.. i tried to change the this.placeholder.Visible = true; before flush(), but nothing.. still the same form..
0
 
monosodiumgCommented:
Then you are nto going to see any HTML in the output because none has been generated. yet.
Why are you flushing in OnInit? At that stage you have pretty much nothing to flush.

0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
alain123Author Commented:
no I'm not flushing inside OnInit().. but After.. I'm flushing inside a Button_Onclick() event  that it's called after OnInit()... and

"Then you are nto going to see any HTML in the output because none has been generated. yet" ..I'm adding the html to the control .. i think it should  be there, unless i'm not doind some kind of refreshing..

               HTML = "<table><tr><td>test</td></tr></table>";
         
               Control objControl = this.Page.ParseControl(HTML);
               this.placeholder.Controls.Add(objControl);
0
 
monosodiumgCommented:
Sorry alain, I've had very littel exposure to the finer points of using controls so I can't help.
0
 
alain123Author Commented:
Thank you mon, for your help, i appreaciate it.
0
 
ptmcompCommented:
Before the render method no html will be written to the output stream therefore Response.Flush() does not change anything. Response.Buffer should be changed in the beginning of the pages lifecycle so that either all contents or nothing is buffered.
0
 
ptmcompCommented:
Place this code in OnPreRender:

              placeholder.Controls.Clear();

               string HTML = "";
               HTML = "<table><tr><td>test</td></tr></table>";
         
               Control objControl = this.Page.ParseControl(HTML);
               this.placeholder.Controls.Add(objControl);
               Response.Buffer= true;

Place this code in the overriden Render method:

               this.placeholder.Visible = true;
               Response.Flush();
               Thread.Sleep(15000);
0
 
ptmcompCommented:
Argh! The Visible property needs also to be set in the prerender method - else Render() will not produce any html.
0
 
AdrianJMartinCommented:
this works and you see the page 'filling up", it seams the Reponse object does not recognise the setting of Buffer to true until it has flushed the response automatically, I just pushed 300 spaces onto the stream as a test and it works.

            private void Button1_Click(object sender, System.EventArgs e)
            {
                  Response.Buffer= true;

//                  Response.Write( "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789<br>" );
                  Response.Write( "                                                                                                        " );
                  Response.Write( "                                                                                                        " );
                  Response.Write( "                                                                                                        " );

                  Response.Flush();


                  Response.Write("test2");
                  for( int i = 0  ; i < 100 ; i ++ )
                  {
                        
                        Response.Write( string.Format("Message {0}<br>" , i ) ) ;
                        Response.Flush();
                        System.Threading.Thread.Sleep(100);
                  }
            }
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now