所以,我有一个中继器,显示远程服务器上的自定义函数列表。中继器显示如下。使用ServerController和更新面板更新不起作用
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问题帖子,认为这可能是一个有约束力的问题,但我不确定,因为我已经厌倦了许多建议的解决方案,无济于事。
在此先感谢您的帮助。
感谢您的回复,这似乎相当有用。特别是'ServiceController.WaitForStatus(ServiceControllerStatus.Running,新的TimeSpan(0,0,5));'但我想更多地让更新面板更新多次文本更改事件,但不确定。也许可以通过与代码后面的repeater item命令事件相互依赖的另一种方法。不过,我相信你的回答是有效的,但是会等到我能实施它,看看它是否适用于我的情况,作为答案。正如我所指出的那样,非常感谢 – user1250570
,在一个请求中有**无法从_server更新面板多次**。你将不得不提出两个请求(_partial,完整 - 通过按钮或ajax ..._) - 很高兴我可以帮助 –
所以我有一个问题适应这个主页面,我不是很熟悉jQuery的。我假设我需要调整标识符? – user1250570