예제 #1
0
        public async Task StartBruteForce(Stack <string> urls)
        {
            _urls = urls;
            List <Task> tasks = new List <Task>();

            while (_urls.Count > 0)
            {
                tasks.Add(LowLevelHttpRequest.BrutForceAsync(_urls.Pop()));
                //Console.WriteLine(_urls.Count());             //непонятно зачем

                if (tasks.Count > _parralelCount)
                {
                    await Task.WhenAny(tasks.ToArray());

                    tasks = CleanFinishTasks(tasks);
                }
            }

            if (tasks.Count > 0)
            {
                tasks = CleanFinishTasks(tasks);
                /*Task ok_optimization = */ await Task.WhenAll(tasks.ToArray());

                //return true;       //!!!!! пробуем возврат значений
            }

            //return false;       //!!!!! пробуем возврат значений
        }
예제 #2
0
 private void AddTasks(Task[] tasks)
 {
     for (var i = 0; i < tasks.Length; i++)
     {
         var currentTask = tasks[i];
         if (currentTask == null || currentTask.IsCompleted || currentTask.IsFaulted || currentTask.IsCanceled)
         {
             tasks[i] = LowLevelHttpRequest.BrutForceAsync(_baseUrl + _urls.Pop());
         }
     }
 }