如何在1个线程中显示弹出窗口?

时间:2013-04-03 06:41:40

标签: javascript asp.net multithreading

我有一个.NET LinkBut​​ton事件需要花费很多时间(成千上万的数据库操作)。 我试图避免用户点击其他地方,直到我的活动结束。所以我为此打开了一个模态弹出窗口,但我无法在活动结束时隐藏它。

protected void ButtonLoadData_Click(object sender, EventArgs e)
{
  ScriptManager.RegisterStartupScript(this.Page, Page.GetType(),"ex", "showPopup();", true);
        //LOTS OF OPERATIONS
  ScriptManager.RegisterStartupScript(this.Page, Page.GetType(),"ex", "hidePopup();", true);

第一个javascript运行(打开我的加载弹出窗口),操作在后台执行,但第二个javascript不运行。我怎么解决这个问题?任何建议

1 个答案:

答案 0 :(得分:0)

为了理解您遇到此问题的原因,您必须了解HTTP协议的基础知识。 HTTP是无状态协议,这意味着一旦客户端(浏览器)从服务器请求页面并且在服务器传递页面之后。客户端和服务器互相忘记了。

在您的代码中,您尝试完成三个步骤。当用户单击页面上的LinkBut​​ton并向服务器发送请求以执行特定操作时,将执行第一步。响应中的服务器显示模式弹出窗口并启动1000的数据库操作。这就是问题发生的地方,到时,数据库操作已经完成,服务器和客户端之间的连接已经结束。因此,当服务器尝试执行第三个操作时,它会以静默方式失败。

我建议使用UpdateProgress控件向用户显示正在执行某些操作。 msdn的这个tutorial将帮助您理解UpdateProgress控件。