/// <summary> /// Handler for the TSConnection's TalkStatusChanged Event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TsConnection_TalkStatusChanged(object sender, TS3QueryLib.Core.Client.Notification.EventArgs.TalkStatusEventArgs e) { string name; if (this.clients.ContainsKey(e.ClientId)) { name = this.clients[e.ClientId].Name; } else { name = "UNKNOWN"; } logger.Trace("TalkStatusChanged: {0} {1}", name, e.TalkStatus); TalkStatus internalStatus = TalkStatus.Unknown; switch (e.TalkStatus) { case TS3QueryLib.Core.Client.Notification.Enums.TalkStatus.TalkStarted: internalStatus = TalkStatus.TalkStarted; break; case TS3QueryLib.Core.Client.Notification.Enums.TalkStatus.TalkFinished: internalStatus = TalkStatus.TalkStopped; break; default: break; } this.RaiseTalkStatusChanged(new Data.TalkStatusEventArgs(e.ClientId, name, internalStatus, e.IsWisper)); }
/// <summary> /// Handler for the TalkStatusChanged event /// </summary> private void EventQueryRunner_TalkStatusChanged(object sender, TS3QueryLib.Core.Client.Notification.EventArgs.TalkStatusEventArgs e) { // Handle the notification on a background task Task.Factory.StartNew(() => { lock (this.connectionLock) { this.RaiseTalkStatusChanged(e); } }); }