我正在创建一个应用程序,逐个显示学生详细信息。当用户点击btnDetails然后我需要启动一个线程,在几秒钟后显示下一个学生的详细信息(这不是硬编码)我需要实时生成详细信息所以需要时间,即2-3分钟,所以我想等。
我已经完成了这段代码,但是获得了异常“响应在此上下文中不可用”,所以如何解决这个问题。
protected void btnNext_Click(object sender, ImageClickEventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location", "http://localhost:2653/WebSite1/Default.aspx"); } public void NextStudent() { try { int iCont = 0; while (true) { Thread.Sleep(3000); iCont++; if (iCont > 5) { btnNext_Click(this, null); break; } } } catch (Exception ex) { Response.Write(ex.Message); } } protected void btnDetails_Click(object sender, EventArgs e) { Thread threadNextQuestion = new Thread(new ThreadStart(NextStudent)); threadNextQuestion.SetApartmentState(ApartmentState.STA); threadNextQuestion.Start(); }
当我手动点击btnNext然后它工作正常,但调用NextStudent()方法得到错误。
所以请建议我如何处理这个问题。
谢谢, Laxmilal Menaria
答案 0 :(得分:1)
只有您的主线程可以访问Response对象。因此,您需要同步调用NextStudent或在您的线程中注册回调委托。
答案 1 :(得分:1)
试试这个:
this.Response.Redirect(this.Request.Url.AbsolutePath);