Jag har en klass som skickar upp events till aspx-sidan. Problemet är att min label som jag har på en updatepanel inte uppdateras visuelt. Om man tittar på labeln i debugläge så har den olika värden efter varje event.
Det måste köras innan servern skickar tillbaka sitt svar, senast innan Render-eventen. Du får hitta på någon trådlåsning eller liknande isf för att lösa problemet
Som det är nu, skapar jag en tråd vid en postback som kör igång metoden och som sedan tar emot resultat som sparas i session.
Genom ett javascript triggar jag sedan uppdateringen av updatepanelen och som även registrerar att javascriptet ska köras om en viss intervall. känns inte klockrent men en lösning.
public partial class _Default : Page
{
private string Status
{
get
{
if (Session["Status"] == null)
Session["Status"] = string.Empty;
return Session["Status"].ToString();
}
set { Session["Status"] = value; }
}
Class1 cl1 = new Class1();
protected void Page_Init(object sender, EventArgs e)
{
UpdatePanel1.Load += new EventHandler(UpdatePanel1_Load);
cl1.CustomEvent += new TestEventHandler(cl1_CustomEvent);
}
void cl1_CustomEvent(object sender, int testCounter)
{
Status = testCounter.ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
ThreadStart ts = new ThreadStart(this.Go);
Thread t = new Thread(ts);
t.Start();
}
public void Go()
{
cl1.Test();
}
protected void UpdatePanel1_Load(object sender, EventArgs e)
{
Label1.Text = Status;
ScriptManager.RegisterStartupScript(this, this.GetType(), "TriggerTimer", "TriggerTimer();", true);
}
}