情况
我有一个 ASP.NET Webform,其中包含有关用户 Microsoft Lync 2010 会话的一些状态信息。在 Page_Load 事件中,我注册了一个事件处理程序,用于侦听 Lync 会话状态更改事件。
一旦事件触发,事件处理程序就会做出正确反应并完成其工作:它会更改特定标签的相应文本。问题是,这些更改在前端网页中不可见。
编码
这是在页面中定义的全局 Lync 客户端实例。
private LyncClient _lyncClient;
这里我在 Page_Load 事件中注册 LyncClient。
protected void Page_Load(object sender, EventArgs e)
{
RegisterLyncClient();
}
我将 LyncClient 实例分配给全局 _lyncClient。之后我注册了我的事件监听器。
private void RegisterLyncClient()
{
_lyncClient = LyncClient.GetClient();
_lyncClient.StateChanged += HandleStateChanged;
}
当 Lync 客户端更改其状态时,此函数会正确触发。它在调试模式下可见。
private void HandleStateChanged(object sender, ClientStateChangedEventArgs e)
{
SetLyncStatus(e.NewState);
}
标签文本已正确更改(在调试模式下)。但是这些变化在前端是不可见的。
private void SetLyncStatus(ClientState lyncState)
{
lblLyncStatus.Text = lyncState.ToString();
}
假设
如果我使用按钮手动更改状态,或者如果我使用计时器每秒检查和调整状态,则更改是可见的。所以我假设在 HandleStateChanged 事件处理程序中所做的更改是不可见的,因为在调用 SetLyncStatus 函数后没有回发。
问题
是否可以从事件处理程序强制回发,而不是从用户操作(例如用户单击按钮)中触发?如果可以调用标签或定义部分的部分刷新,那将是完美的。
任何建议都非常感谢。谢谢!