public void ConnectionLoop(CancellationToken cancellationToken) { new Thread(() => { var connected = false; while (!cancellationToken.IsCancellationRequested && !connected) { try { logger.LogInformation($"try connect to {option.Value.mt4.server}..."); pumping.Connect(option.Value.mt4.server); manager.Connect(option.Value.mt4.server); logger.LogInformation($"connected to {option.Value.mt4.server}"); logger.LogInformation($"try logining from {option.Value.mt4.login}..."); pumping.Login(option.Value.mt4.login, option.Value.mt4.password); manager.Login(option.Value.mt4.login, option.Value.mt4.password); logger.LogInformation($"logining success"); pumping.SymbolsRefresh(); manager.SymbolsRefresh(); this.groups = manager.GroupsRequest(); logger.LogInformation($"switch to pumping mode..."); pumping.PumpingSwitchEx(flags: PumpingFlags.HIDE_TICKS, param: null); logger.LogInformation($"pumping mode ok"); connected = true; } catch (Exception e) { logger.LogError($"common error: {e.Message}"); Thread.Sleep(TimeSpan.FromSeconds(3)); } } }) { IsBackground = true }.Start(); }