所以,我有一个中继器,它显示远程服务器上的自定义函数列表。中继器显示如下。
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 运行时禁用按钮,这是一个小的用户校对步骤,这似乎不会导致按钮被禁用。我已经阅读了大量的更新面板问题帖子,并认为这可能是一个绑定问题,但我不确定,因为我已经厌倦了许多建议的解决方案,但无济于事。
提前感谢您的帮助。