C # - Запись в текстовый файл внутри параллельного цикла. - PullRequest
0 голосов
/ 24 сентября 2018

Я сделал проверку прокси, однако, так как я использую цикл Parallel.foreach, я получаю через X количество времени, ошибку и просто сбой программы.

говорит, что запись уже используетсядругой процесс, вот мой код:

public static void Check()
    {
        Proxy.Load();
        ThreadPool.SetMinThreads(Program.Threads, Program.Threads); // For example 100, 100
        ThreadPool.SetMaxThreads(Program.Threads, Program.Threads); // For example 100, 100
        Parallel.ForEach(Proxy.Proxies, proxy =>
        {
            using (var request = new HttpRequest())
            {
                try
                {
                    request.UserAgent =
                        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.183 Safari/537.36 Viv/1.96.1147.52";
                    request.Proxy = HttpProxyClient.Parse(proxy);
                    request.ConnectTimeout = Program.TimeOut;
                    var Post = request.Post("http://209.250.244.126/judge/");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine($"[+] {proxy} - HTTP");
                    HTTP.Add(proxy);
                }
                catch
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"[-] {proxy}");
                }
            }
            // Write the Good proxies to the text file
            File.WriteAllLines(Environment.CurrentDirectory + "/Good.txt", HTTP);
        });
    }

Что мне нужно сделать:

Я хочу записать все прокси-серверы Good в текстовый файл во время выполнения проверки, и явсе еще хочу использовать потоки, чтобы сделать проверку намного быстрее

1 Ответ

0 голосов
/ 26 сентября 2018

Попробуйте обернуть строку вывода файла в оператор блокировки .Это ограничит оценку файла только одним потоком за раз.

...