private void Connect() { if (_hasBeenDisposed) return; var audioChatIp = System.Net.IPAddress.Parse(App.Settings.AudioChatIp); var audioChatPort = App.Settings.AudioChatPort; var endpoint = new System.Net.IPEndPoint(audioChatIp, audioChatPort); _audioChatClient = new VoipClient(endpoint, _userData.PgSession.AuthToken); _audioChatClient.MessageReceived += _audioChatClient_MessageReceived; _audioChatClient.Stopped += _audioChatClient_Stopped; _audioChatClient.Start(); _udpKeepAliveTimer.Start(); }
void _audioChatClient_Stopped(VoipClient obj) { lock (_audioChatSynch) { _udpKeepAliveTimer.Stop(); if (_hasBeenDisposed) return; _audioChatClient.MessageReceived -= _audioChatClient_MessageReceived; _audioChatClient.Stopped -= _audioChatClient_Stopped; ((Action)Connect).DelayInvokeUI(TimeSpan.FromSeconds(5)); } }
public void Dispose() { _hasBeenDisposed = true; if (_nAudioTest == null) return; _nAudioTest.Dispose(); _nAudioTest = null; lock (_audioChatSynch) { _audioChatClient.MessageReceived -= _audioChatClient_MessageReceived; _audioChatClient.Stopped -= _audioChatClient_Stopped; _audioChatClient.Stop(); _audioChatClient = null; } _udpKeepAliveTimer.Stop(); }