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
{
...
}
}
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のようなものでハングさせないでください。
別のページにリダイレクトするには、メタタグだけで十分です
広告メタタグを動的に
Response.AddHeader("REFRESH", "5;URL=~/account/login");
このコードは現在のページにメタタグを追加し、ページは上記のように指定された時間内に別のページにリダイレクトされます。