次のaspxページがあります。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblStatus" runat="server" Text="Label">
</asp:Label><asp:Button ID="btnRun" runat="server" Text="Button" onclick="btnRun_Click" />
</div>
</form>
</body>
</html>
コードビハインドは次のとおりです。
public partial class index : System.Web.UI.Page
{
protected void btnRun_Click(object sender, EventArgs e)
{
CP CPObj = new CP();
lblStatus.Text = "Starting process..";
CPObj.run();
lblStatus.Text = "Process done.";
}
}
クラスはいくつかの作業を行う必要があります(約1分)。ボタンをクリックしてもラベルは変更されず、クラスがジョブを完了した後でのみ、ラベルが「処理完了」に変更されます。
私は本当に長い間解決策を探してきましたが、明確で直接的な答えを見つけることができませんでした。
クラスをスレッドとして実行しようとしましたが、同じ結果が得られました。
public partial class index : System.Web.UI.Page
{
protected void btnRun_Click(object sender, EventArgs e)
{
CP CPObj = new CP();
Thread oThread = new Thread(new ThreadStart(CPObj.run));
lblStatus.Text = "Starting process..";
oThread.Start();
while (!oThread.IsAlive) ;
while (oThread.IsAlive)
{
Thread.Sleep(1000);
}
lblStatus.Text = "Process done.";
}
}
私はすでにonClick呼び出しを持っているので、JavaScriptの使用には問題があるようです(ここで正しいかどうかはわかりません)。
返信ありがとうございます。
ありがとう!ナダブ