List<string> cookielist = new List<string>(); //список куки
List<string> dirs = new List<string>(); //список файлов в папке(заполняется до старта)
private void StartThread() //Создаем цикл потоков
{
if (dirs.Count > 0) //если строки в листе присутствуют , то...
{
var options = new ParallelOptions(); //опции паралели
options.MaxDegreeOfParallelism = guna2TrackBar1.Value; //кол-во паралельных потоков
Parallel.ForEach(dirs, options, dir => Run(dir)); //запускаем паралельный чек
MessageBox.Show("Чек окончен!", "Внимание!",MessageBoxButtons.OK,MessageBoxIcon.Error); //выведется когда все папки пройдут
}
}
/*
* ==================================================================================
* СТАРТ ЧЕКА==================================================================================
* ==================================================================================
*/
private void Run(string dir) //передаем в поток папку
{
string[] files = Directory.GetFiles(dir); //ищем файлы в выбранной папке
foreach (string file in files) //перебираем файлы в папке
{
if (file.Contains("ookie")) //если в название есть " " .а конкретнее cookie
{
cookielist = File.ReadAllLines(file).ToList(); // прочитать его в List cookie
}
}
}
Как будет использоваться Список List<string> cookielist?
- Список cookielist будет перезаписываться каждым потоком
- Список cookielist будет общим для всех паралельных потоков(все файлы будут записаны в 1 лист)
- Список cookielist будет для каждого индивидуальный
Список cookielist будет перезаписываться каждым потоком, это ж очевидно. – aepot Feb 04 '21 at 08:00Указываем кол-во потоков , файл с куками , тыкаем старт. Парсер используя куки заходит на сайт через GET запрос и собирает необходимую информацию, после чего выплевывает ее в txt файл , разделяя по категориям. В одном потоке это прекрасно работает, в многопотоке значительно сложнее.
Файл куки для каждого потока должен быть уникальным
– Kain Feb 04 '21 at 08:01Логика программы должна быть такая:
3 . StartThread() Создаем колличество потоков = trackbar.Value и запускаем их 4. Run() Каждый поток из свой папки находит файл с именем cookie и записывает его содержимое в виде строк 5. Далее ели набор сайтов на которые нужно зайти если имеются куки от этого сайта.
Вот весь код
https://whosts.ru/gV38z9Rq0L
– Kain Feb 04 '21 at 08:45HttpClientс сохраняемыми куками - то вот пример. – aepot Feb 04 '21 at 09:12string[] lines = await File.ReadAllLinesAsync(file);И если бы вы перешли по ссылке и почитали бы про асинхронность, то поняли бы разницу между I/O асинхронной операцией и CPU асинхронной операцией. Вы уверены, что вам это не нужно знать? – aepot Feb 04 '21 at 13:05