我有一個包含有關用戶的Lync微軟2010年會議的一些狀態信息的ASP.NET網絡表單中更新前端。在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函數後沒有回發。
問題
是否可以強制從事件處理回傳,這不是從用戶的動作射擊(例如用戶點擊一個按鈕)?如果可以調用標籤或定義部分的局部刷新,那將是完美的。
任何建議非常感謝。謝謝!
你確切的情況是什麼?可能有更合適的方法來實現您的解決方案,而不是在Web服務器上安裝Lync客戶端 –
是的,那是我在本地開發過程中未識別的另一個問題。確保Lync事件發生在服務器而不是客戶端。好的,謝謝你真的很好的建議... –