そのため、リモートサーバー上のカスタム関数のリストを表示するリピーターがあります。リピーターは次のように表示されます。
serverName serviceName serviceStatus Button1 Button2
----------------------------------------------------------
Carolina StatsTracker Running update stop
...
..
.
serviceStatusは、リピーター内の更新パネルでラップされます
<asp:UpdatePanel ID="statusUpdate" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<td><asp:Label ID="RowStatus" Width="100px" Text="Status..." runat="server" /></td>
</ContentTemplate>
</asp:UpdatePanel>
そして、背後にあるコードでは、servercontrollerを介してサーバーにコマンドを送信し、serviceStatusをリアルタイムで、または少なくともリアルタイムにできるだけ近づけて更新しようとします。このような
if (svc.Status != ServiceControllerStatus.Stopped)
{
svc.Stop();
StatusLabel.Text = "Stopping";
statusUPdatePanel.Update();
while (svc.Status != ServiceControllerStatus.Stopped)
{
System.Threading.Thread.Sleep(1000);
svc.Refresh();
}
StatusLabel.Text = svc.Status.ToString();
statusUPdatePanel.Update();
}
System.Threading.Thread.Sleep(1000);
if (svc.Status != ServiceControllerStatus.Running)
{
svc.Start();
StatusLabel.Text = "Starting";
statusUPdatePanel.Update();
while (svc.Status != ServiceControllerStatus.Running)
{
System.Threading.Thread.Sleep(1000);
svc.Refresh();
}
StatusLabel.Text = svc.Status.ToString();
statusUPdatePanel.Update();
}
この問題は、ステータスがリアルタイムで更新されないことです。実行中またはエラーのいずれかである最終値にのみ更新されます。ただし、停止、開始、または停止が発生したときに表示されることはありません。また、ボタンをクリックすると、serverControllerの実行中にボタンが無効になります。これは、ユーザーによる小さな校正手順であり、ボタンが無効になることはないようです。たくさんのupdatepanelの問題の投稿を読んだことがあり、それが拘束力のある問題である可能性があると思いますが、提案された解決策の多くが役に立たないので、よくわかりません。
助けてくれてありがとう。