14

Webアプリケーションの登録ページを作成します。アプリケーションでは、ユーザーが新しいアカウントを正常に登録した後、ページに「正常に登録しました」というメッセージが表示され、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
        {
            ...
        }
    }
4

2 に答える 2

34

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

詳細を参照してください

デスクトップアプリケーションの場合は、タイマーのようなものを使用できます。また、メインスレッド(UIスレッド)をThread.Sleepのようなものでハングさせないでください。

于 2012-04-13T13:34:13.727 に答える
0

別のページにリダイレクトするには、メタタグだけで十分です

広告メタタグを動的に

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

このコードは現在のページにメタタグを追加し、ページは上記のように指定された時間内に別のページにリダイレクトされます。

于 2014-10-06T12:14:23.837 に答える