public void SetCloseInfo() { scoketManager.StopTradeTimer(); scoketManager.Dispose(); #region 清空下单面板 ClearTradeList(); #endregion TradeInfoHelper.OptionalModelList.Clear(); SetOptionalList(); UserInfoHelper.IsLock = false; UserInfoHelper.IsHaveLogin = false; IsSiteEnable = true; IsUserNameEnable = true; AuthCodeVisibility = Visibility.Visible; LoginBtnName = "登录"; LoginStatus = string.Empty; Password = string.Empty; AuthCode = string.Empty; CreateImageSource(); ServerStatusInfoHelper.Instace().TradeServerStatus = string.Empty; }
private void DoLoginTemp() { if (string.IsNullOrEmpty(UserName) || string.IsNullOrEmpty(Password)) { MessageBox.Show("请输入账号/密码!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } if (string.IsNullOrEmpty(AuthCode)) { MessageBox.Show("请输入验证码!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } if (AuthCode.ToUpper() == validCode.ReturnCode.ToUpper()) { scoketManager.Dispose(); LoginBtnIsEnabled = false; if (!scoketManager.StartTradeSocket(true)) { LoginBtnIsEnabled = true; ServerStatusInfoHelper.Instace().TradeServerStatus = string.Empty; MessageBox.Show("服务器无法连接,请检查服务器,重新登录!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } loginBll.SendLoginInfo(UserName, Password, MAC, IP); } else { AuthCode = string.Empty; CreateImageSource(); MessageBox.Show("验证码输入有误,请检查后输入!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning); } SetClientUsers(UserName); }
private void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { try { var trademodel = TradeQuotesViewModel.GetInstance(null); if (ServerStatusInfoHelper.Instace().IsReattached) { #region 行情重连之后执行 ServerStatusInfoHelper.Instace().IsReattached = false; var mainViewModel = MainViewModel.GetInstance(); if (mainViewModel.SelectItemViewModel != null) { if (Application.Current != null) //判断不为空 { Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action( () => { mainViewModel.SelectItemViewModel.Tick.EachDealList.Clear(); })); } _scoketManager.SendSubscribeInfo(7, mainViewModel.SelectItemViewModel.ContractCode); } var clearDealList = mainViewModel.QuotesSubscribed.ToList(); foreach (var item in clearDealList) { var futuresModel = _viewModel.FuturesViewModelList.FirstOrDefault(o => !string.IsNullOrEmpty(o.ExchangeDisplay) && string.Equals(o.ContractCode, item)); if (futuresModel != null) { if (futuresModel.Tick.EachDealList.Count == 0) { continue; } if (Application.Current != null) //判断不为空 { Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action( () => { futuresModel.Tick.EachDealList.Clear(); })); } } } mainViewModel.QuotesSubscribed.Clear(); LogHelper.Info("重连之后行情订阅:" + string.Join(",", mainViewModel.SubscribedStocks)); _scoketManager.SendSubscribeInfo(7, mainViewModel.SubscribedStocks); if (mainViewModel.SelectItemViewModel != null) { if (Application.Current != null) //判断不为空 { Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action( () => { //if (trademodel.RealTimeVisibility == Visibility.Visible || trademodel.KLineVisibility == Visibility.Visible) //{ // mainViewModel.SelectItemViewModel.Tick.SetEachDealList(); //} })); } } #endregion } if (trademodel.IsInternationalCheck) { int rowIndex = -1; //int i = 0; List <string> subList = new List <string>(); List <string> viewList = new List <string>(); var mainViewModel = MainViewModel.GetInstance(); this.AllFuturesQuota.Dispatcher.Invoke(new Action(() => { TabItem tabItem = AllFuturesQuota.Items[_viewModel.SelectedIndex] as TabItem; var dataGrid = (tabItem.Content as QuotesDataGrid).quotesDataGrid; if (dataGrid.Items.Count > 0) { for (int a = 0; a < dataGrid.Items.Count; a++) { var item = dataGrid.Items[a]; var Row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(item); if (Row != null) { if (Row.TransformToVisual(dataGrid).Transform(new Point(0, 0)).Y + Row.ActualHeight >= dataGrid.ActualHeight) { rowIndex = a; break; } } } if (rowIndex == -1) { rowIndex = dataGrid.Items.Count - 1; if (rowIndex == -1) { return; } } int j = 0; do { if (rowIndex < 0) { break; } var Row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex); if (Row != null) { FuturesViewModel stock = Row.DataContext as FuturesViewModel; if (stock != null) { if (!mainViewModel.QuotesSubscribed.Contains(stock.ContractCode) && !mainViewModel.SubscribedStocks.Contains(stock.ContractCode)) { subList.Add(stock.ContractCode); mainViewModel.QuotesSubscribed.Add(stock.ContractCode); } viewList.Add(stock.ContractCode); } } rowIndex--; j++; } while (j < 28); } })); if (subList.Count > 0) { LogHelper.Info("行情订阅:" + string.Join(",", subList)); _scoketManager.SendSubscribeInfo(7, subList); } FuturesViewModel selectModel = mainViewModel.SelectItemViewModel; List <string> unSubList = new List <string>(); List <string> tempList = mainViewModel.QuotesSubscribed.ToList(); if (tempList.Count > 0) { foreach (var item in tempList) { if (!string.IsNullOrEmpty(item) && !viewList.Contains(item) && !mainViewModel.SubscribedStocks.Contains(item) && (selectModel == null || !string.Equals(selectModel.ContractCode, item))) { mainViewModel.QuotesSubscribed.Remove(item); unSubList.Add(item); } } } if (unSubList.Count > 0) { LogHelper.Info("行情反订阅:" + string.Join(",", unSubList)); _scoketManager.SendSubscribeInfo(8, unSubList); } } } catch (Exception ex) { LogHelper.Info("StockQuota:myTimer_Elapsed" + ex.ToString()); } }