예제 #1
0
        private void UpDatePosition(PositionOnBoard position)
        {
            lock (_lockerUpDatePosition)
            {
                Portfolio myPortfolio = null;

                if (_portfolios != null)
                {
                    myPortfolio = _portfolios.Find(portfolio => portfolio.Number.Split('@')[0] == position.PortfolioName);
                }
                if (myPortfolio == null)
                {
                    PositionOnBoardSander sender = new PositionOnBoardSander();
                    sender.PositionOnBoard    = position;
                    sender.TimeSendPortfolio += UpDatePosition;

                    Thread worker = new Thread(sender.Go);
                    worker.IsBackground   = true;
                    worker.CurrentCulture = new CultureInfo("ru-RU");
                    worker.Start();
                    return;
                }

                myPortfolio.SetNewPosition(position);

                if (UpdatePortfolios != null)
                {
                    UpdatePortfolios(_portfolios);
                }
            }
        }
예제 #2
0
        private void PlazaControllerOnUpdatePosition(PositionOnBoard positionOnBoard)
        {
            lock (_lockerUpdatePosition)
            {
                // write in the security name right description, becaus before in this line some ID / забиваем в название инструмента правдивое описание, т.к. до этого в этой строке некий ID

                Security security = null;

                if (_securities != null)
                {
                    security = _securities.Find(security1 =>
                                                security1.NameId == positionOnBoard.SecurityNameCode ||
                                                security1.Name == positionOnBoard.SecurityNameCode);
                }

                if (security == null)
                {
                    PositionOnBoardSander sender = new PositionOnBoardSander();
                    sender.PositionOnBoard    = positionOnBoard;
                    sender.TimeSendPortfolio += PlazaControllerOnUpdatePosition;

                    Thread worker = new Thread(sender.Go);
                    worker.CurrentCulture = new CultureInfo("ru-RU");
                    worker.IsBackground   = true;
                    worker.Start();
                    return;
                }

                positionOnBoard.SecurityNameCode = security.Name;
                Portfolio myPortfolio = null;
                if (_portfolios != null)
                {
                    myPortfolio = _portfolios.Find(portfolio => portfolio.Number == positionOnBoard.PortfolioName);
                }

                if (myPortfolio == null)
                {
                    PositionOnBoardSander sender = new PositionOnBoardSander();
                    sender.PositionOnBoard    = positionOnBoard;
                    sender.TimeSendPortfolio += PlazaControllerOnUpdatePosition;

                    Thread worker = new Thread(sender.Go);
                    worker.CurrentCulture = new CultureInfo("ru-RU");
                    worker.IsBackground   = true;
                    worker.Start();
                    return;
                }

                myPortfolio.SetNewPosition(positionOnBoard);

                if (PortfolioEvent != null)
                {
                    PortfolioEvent(_portfolios);
                }
            }
        }