Подтвердить что ты не робот

Задержка времени перед перенаправлением

Я создаю страницу регистрации для своего веб-приложения. Приложение требует, чтобы после успешной регистрации учетной записи пользователя на странице появится сообщение "Зарегистрировать успешно", а затем подождите 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
        {
            ...
        }
    }
4b9b3361

Ответ 1

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" />

см. подробнее.

Если это настольное приложение, вы можете использовать что-то вроде timers. И никогда не делайте основной поток (поток UI) зависает с чем-то вроде Thread.Sleep.

Ответ 2

Только метатег достаточно перенаправить на другую страницу

метатег объявлений динамически

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

Этот код будет показывать метатег на текущую страницу, и ваша страница будет перенаправляться на другую страницу в указанное время, как указано выше.