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();
        }