The earlier you can do it in the page lifecycle, the better. Make sure you do it before the page's prerender event.
void b_Click(object sender, EventArgs e)
{
((Label)FindControl("mylabel")).Text = DateTime.Now.ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager sm = new ScriptManager();
sm.ID = "sm1";
sm.SupportsPartialRendering = true;
sm.EnablePartialRendering = true;
this.form1.Controls.Add(sm);
UpdatePanel up = new UpdatePanel();
up.ID = "up";
up.RenderMode = UpdatePanelRenderMode.Block;
up.UpdateMode = UpdatePanelUpdateMode.Always;
this.form1.Controls.Add(up);
Button b = new Button();
b.Text = "Click me";
b.Click += new EventHandler(b_Click);
up.ContentTemplateContainer.Controls.Add(b);
Label l = new Label();
l.Text = "";
l.ID = "mylabel";
up.ContentTemplateContainer.Controls.Add(l);
}