重定向之前的时间延迟

时间:2012-04-13 13:12:53

标签: c# timedelay

我为我的网络应用程序创建了一个注册页面。应用程序要求在用户成功注册新帐户后,页面将显示“注册成功”消息,然后等待5秒再切换到“登录”页面。我用了Thread.Sleep(5000)。它等待5秒但不显示消息。任何人都可以帮助我吗?

void AccountServiceRegisterCompleted(object sender, RegisterCompletedEventArgs e)
    {
        if (e.Result)
        {
            lblMessage.Text = "Register successfully";

            Thread.Sleep(5000); 
            this.SwitchPage(new Login());
        }
        else
        {
            ...
        }
    }

2 个答案:

答案 0 :(得分:31)

Thread.Sleep(5000)只会暂停你的线程5秒 - 在此期间不会执行此线程的代码。所以没有消息或其他任何内容。

如果它是一个ASP.NET应用程序,客户端不知道服务器上发生了什么,并等待服务器的响应5秒钟。您必须手动实现此逻辑。例如,使用JavaScript:

setTimeout(function(){location.href = 'test.aspx';}, 5000);

或添加HTTP标头:

Response.AddHeader("REFRESH","5;URL=test.aspx");

meta代码:

<meta http-equiv="refresh" content="5; url=test.aspx" />

请参阅more info

如果是桌面应用程序,您可以使用timers之类的内容。永远不要让主线程(UI线程)挂起像Thread.Sleep。

答案 1 :(得分:0)

只有元标记足以重定向到另一个页面

动态广告元标记

Response.AddHeader("REFRESH", "5;URL=~/account/login");

此代码会在当前页面上添加元标记,您的页面将在指定时间内重定向到另一个页面。