2012-04-13 18 views
13

Webアプリケーション用の登録ページを作成します。アプリケーションでは、ユーザーが新しいアカウントを正常に登録すると、「Register successfully」というメッセージが表示され、5秒間待ってからLoginページに切り替える必要があります。私は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

ASP .NET WebForms? MVC?その他?受け取る回答に影響を与えるので、適切なタグを付けてください。 – Yuck

+0

なぜ、すぐに登録ページにリダイレクトしないのですか?「Register Successful」というフラグが付いています。 ?register = trueのGETパラメータでリダイレクトするか、フラグを表示するもので十分です。これはさらにユーザーフレンドリーです。 – Bowersbros

答えて

28

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のようなものでハングさせないでください。

+2

個人的には、私はHTTPヘッダを好むので、投票++ – Giuliano

+0

ありがとうLorond、説明は非常に明確で理解しやすいです。これらの提案を使用して試してみます。 – user1331344

+0

ログインフォームであり、アップデートパネル内にある場合はどうなりますか?私は上記の方法を試して、それは私をリダイレクトしませんでした:/ – SearchForKnowledge

0

のみメタタグは

広告メタタグを動的に

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

は、このコードは、広告現在のページと自分のページにメタタグを内の別のページにリダイレクトされますされます別のページにリダイレクトするのに十分です上記のような指定時間。

+0

誰がこの-2マークをしましたか? –

関連する問題