2016-06-25 13 views
0

サーバー側のプロセスの実行中にボタンのテキストを変更しようとしていて、終了後にテキストを変更しようとしています。次のコードは機能しません。私はおそらくそれが同期的に実行されていると仮定しているのですか?これは達成可能ですか?プロセスの実行中に制御テキストを更新する

Protected Sub btnUpdate_Click(sender As Object, e As EventArgs) 

    btnUpdate.Text = "Updating" 

    Dim myProcess As Process = System.Diagnostics.Process.Start("path to file") 

    myProcess.WaitForExit() 

    btnUpdate.Text = "Update" 

    myProcess.Close() 

End Sub 
+1

これはあなたの考えるよりも少し複雑です。まず、HTTPの仕組みを理解する必要があります。具体的には、サーバーへの1つの*要求とサーバーからの1つの*応答があります。したがって、サーバーはクライアントに応答を送信する前に作業を完全に完了する必要があります。定期的なアップデートを取得するには、AJAXを使用する必要があります.AJAXやWeb Sockets(SignalRと呼ばれるもの)を使用する必要があります。 – David

+0

OK、それは意味があります。私は、クライアントサイドのテキストを更新するクリックイベントハンドラを作成することで、必要なものを達成することができました。明確にしてくれてありがとう! –

答えて

0

あなたはOnClientClickで、できるだけ早くそれをクリックすると、ボタンのテキストを変更することができます。

<asp:Button ID="btnUpdate" runat="server" OnClientClick="this.value = 'Updating';" Text="Update" OnClick="btnUpdate_Click" /> 

ページがポストバック後に更新されたときにそれは元の値に戻す取得する必要があります。

関連する問題