Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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());
            }
        }