Пример #1
0
        public double DisplayStartingCalculatingMessage()
        {
            _outputManager.DisplayMessage("Starting calculating... ");
            _outputManager.DisplayMessage("Please, wait till finish or input new values:");

            return(_inputManger.GetInputNumericValue());
        }
Пример #2
0
        public static string FormOutputDownloadPath(string fileName, IOutputManager outputManager = null)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                if (outputManager != null)
                {
                    outputManager.DisplayMessage("No file name is set");
                }
                else
                {
                    throw new ArgumentNullException(nameof(fileName));
                }
            }

            if (string.IsNullOrEmpty(Path.GetExtension(fileName)))
            {
                if (outputManager != null)
                {
                    outputManager.DisplayMessage("No file extension is set");
                }
                else
                {
                    throw new ArgumentException("No file extension is set");
                }
            }

            if (!Directory.Exists(OutputDownloadDirectory))
            {
                Directory.CreateDirectory(OutputDownloadDirectory);
            }

            return(Path.Combine(OutputDownloadDirectory, fileName));
        }
        public Task Task7_ContinueRegardlessResult(Action logic)
        {
            if (logic == null)
            {
                throw new ArgumentNullException(nameof(logic));
            }

            return(Task.Run(() => logic)
                   .ContinueWith((prev) => _outputManager.DisplayMessage("Continuation regardless result")));
        }
        private void CreateThreadsRecursivelyUsingThread(int number)
        {
            while (_recursiveThreadNumber++ < RecursivelyThreadsLimit)
            {
                _outputManager.DisplayMessage($"{_recursiveThreadNumber}) Thread id = {Thread.CurrentThread.ManagedThreadId} - {number}");

                var newThread = new Thread(() => CreateThreadsRecursivelyUsingThread(--number));
                newThread.Start();
                newThread.Join();
            }
        }
Пример #5
0
        private void SafelyPrintCollectionValues(object sender, NotifyCollectionChangedEventArgs e)
        {
            lock (_lockedObject)
            {
                _outputManager.DisplayMessage($"Items in collection: {_collection.Count}");

                foreach (var item in _collection)
                {
                    _outputManager.DisplayMessage(item.ToString());
                }
            }
        }
Пример #6
0
        public double GetInputNumericValue()
        {
            var isSuccess   = false;
            var stringValue = GetInputStringValue();

            while (!isSuccess)
            {
                if (!double.TryParse(stringValue, out var doubleValue))
                {
                    _outputManager.DisplayMessage("Input value is not a number. Please, try again.");
                    stringValue = GetInputStringValue();
                }
                else
                {
                    isSuccess = true;
                }
            }

            return(double.Parse(stringValue));
        }
        public Task Task2(int arrayCapacity)
        {
            var tasks = Task.Factory.StartNew(() => GenerateRandomIntArray(arrayCapacity))
                        .ContinueWith(resultIntArray => MultipleIntArrayWithRandom(resultIntArray.Result, arrayCapacity))
                        .ContinueWith(resultIntArray => SortArrayValues(resultIntArray.Result))
                        .ContinueWith(resultIntArray => resultIntArray.Result.Average());

            _outputManager.DisplayMessage($"Task 2 result: {tasks.Result}");

            return(tasks);
        }