internal void SpeedTest(Action onFinish) { //Action ac = () => //{ //}; var p = new SpeedTester(this, _config); p.Run(onFinish); }
public void Close() { lock (this) { if (closed) { return; } closed = true; } try { if (TryReconnect()) return; lock (server) { if (this.State != ConnectState.END) { this.State = ConnectState.END; server.ServerSpeedLog().AddDisconnectTimes(); server.GetConnections().DecRef(this.connection); server.ServerSpeedLog().AddSpeedLog(new TransLog((int)speedTester.GetAvgDownloadSpeed(), DateTime.Now)); } getCurrentServer = null; ResetTimeout(0); speedTester = null; } CloseSocket(ref connection); CloseSocket(ref connectionUDP); CloseSocket(ref remote); CloseSocket(ref remoteUDP); if (remoteTDP != null) { try { remoteTDP.Shutdown(); //remoteTDP.Close(); } catch (Exception e) { Logging.LogUsefulException(e); } remoteTDP = null; } if (obfs != null) { obfs.Dispose(); obfs = null; } lock (encryptionLock) { lock (decryptionLock) { if (encryptor != null) ((IDisposable)encryptor).Dispose(); if (encryptorUDP != null) ((IDisposable)encryptorUDP).Dispose(); } } } catch (Exception e) { Logging.LogUsefulException(e); } }