コード例 #1
0
        public void StartThreads(int count)
        {
            var container = ChislerContainer.GetInstance();

            container.Reset();

            for (var i = 0; i < count; i++)
            {
                Task.Factory.StartNew(() => CalcTasksStarter(container.Token));
            }
        }
コード例 #2
0
        public Chisler Calculate(int threadId, int newPart, CalcRequestEnum сalcRequest, Func <int, int, int> calculator)
        {
            var container      = ChislerContainer.GetInstance();
            var currentChisler = container.GetCalcValue(threadId, сalcRequest);

            //Расчёт
            var currentValue = currentChisler.Value == 0 ? 1 : currentChisler.Value;
            var newValue     = calculator(currentValue, newPart);

            //Обновление контейнера результатов
            return(container.UpdateCalcValue(threadId, newValue, сalcRequest));
        }
コード例 #3
0
        public IEnumerable <Chisler> GetCurrentValues(CalcRequestEnum сalcRequest)
        {
            var container = ChislerContainer.GetInstance();

            return(container.GetCurentCalcValues(сalcRequest));
        }
コード例 #4
0
        public void StopThreads()
        {
            var container = ChislerContainer.GetInstance();

            container.TokenSource.Cancel();
        }