为什么线程在response.write之前出现

时间:2012-12-19 13:49:54

标签: asp.net vb.net

当我运行代码时,在response.write之前的线程进程!!为什么以及如何按顺序制作它们?

insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Thread.Sleep(4000)
Response.Redirect("Default.aspx")

3 个答案:

答案 0 :(得分:1)

响应是Web应用程序中的一次性事情。你不能“回应一点,做别的事情,并做出更多回应。”当您考虑修改响应的标题之类的Response.Redirect()之类的内容时尤其如此。 (基本上,Response.Redirect()将完全“破坏”您添加到响应中的任何内容,以便用户永远不会看到它。)

看起来你在这里要做的是:

  1. 向用户显示消息。
  2. 等几秒钟。
  3. 将用户发送到另一个页面。
  4. 有几种标准方法可以实现这一目标。您可以使用包含步骤1的页面进行响应,在客户端代码中执行步骤2和3,或者您可以在服务器端代码中执行步骤3,在第二页上执行步骤1(可能还有两个,隐藏消息几秒后。)

    例如,假设您要在页面A上显示消息,等待几秒钟,然后将用户发送到页面B.然后在页面A中,您可能包含以下内容:

    <script type="text/javascript">
        $(function() {
            $('#dialog-message').dialog({
                modal: true,
                buttons: {
                    Ok: function() {
                        $(this).dialog('close');
                    }
                },
                close: function() {
                    window.location.href='Default.aspx';
                }
            });
        });
    </script>
    <div id="dialog-message">Done successfully ...</div> 
    

    使用jQuery,它的作用是向用户显示一个对话框(使用jQuery UI Dialog)和预期的消息,当用户关闭对话框时,它会执行重定向。

答案 1 :(得分:0)

您可以使用代码中的客户端功能来执行此操作 请参阅以下链接

http://social.msdn.microsoft.com/Forums/da/sharepointdevelopmentprevious/thread/087c6b95-fe8d-48ea-85e6-b7fbcb777a5c

答案 2 :(得分:0)

Web响应只会在webrequest完成处理后进入页面,即您可以在完全执行代码后看到响应。因此您的代码正在排除正确的顺序。您可以通过插入Response.End()方法来测试它如下图所示

insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Response.End();
Thread.Sleep(4000)
Response.Redirect("Default.aspx")