状況
ユーザーの Microsoft Lync 2010 セッションに関するステータス情報を含む ASP.NET Web フォームがあります。Page_Load イベントで、Lync セッション ステータス変更イベントをリッスンするイベント ハンドラーを登録しました。
イベントが発生すると、イベント ハンドラーは正しく反応し、その役割を果たします。特定のラベルの適切なテキストを変更します。問題は、変更がフロント エンドの Web ページに表示されないことです。
コード
これは、ページで定義されたグローバルな Lync クライアント インスタンスです。
private LyncClient _lyncClient;
ここでは、LyncClient を Page_Load イベントに登録しています。
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();
}
予測
ボタンを使用してステータスを手動で変更したり、タイマーを使用して 1 秒ごとにステータスを確認および調整したりすると、変更が表示されます。したがって、SetLyncStatus 関数を呼び出した後にポストバックがないため、HandleStateChanged イベント ハンドラー内で行われた変更は表示されないと思います。
質問
ユーザーのアクション (ユーザーがボタンをクリックするなど) によって発生しない、イベント ハンドラーからのポストバックを強制することはできますか? ラベルまたは定義されたセクションの部分的な更新を呼び出すことができれば完璧です。
どんな提案でも大歓迎です。ありがとう!