Всем здравствуйте. Очень нуждаюсь в вашей помощи. Если реально поможете, то могу закинуть на пивас, сиги, дошик или мороженное для вашей дамы (в USDT только). Суть в том, что у меня есть файл, оттуда я построчно вытаскиваю строчки (извиняюсь за тавтологию), формирую запрос, отправляю его, получаю ответ и на основе ответа либо записываю эту строчку в новый файл, либо ничего не делаю. Большая проблема в том, что пока запрос уйдёт, пока ответ придёт - на это уходит около секунды (0.86+-). Надо как-то так сделать, чтобы одновременно по 100 строк бралось, отправлялись запросы разом, приходили ответы плюс-минус разом (как придут) ну и так далее. Изначально мой недокод был такой:
Потом мне немного помогли, а если быть точней, то предоставили такой код:
Когда batch.Count == 100 - вылетают исключения:
-"System.IO.IOException: "The process cannot access the file"
-"System.Net.WebException: "Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера."
-"System.AggregateException: "One or more errors occurred"
Методом научного непонятно на чём обоснованного понижения добрался до batch.Count == 5, исключений нет, но и время изменилось совсем каплю (0.76+-).
В общем и целом, ищу тех самых супер мега гуру, которые сделают за меня то, что мне нужно. Зато честно и откровенно. С меня + в репу, пожизненный респект и если надо, то вначале написал, что могу на мороженное закинуть. Заранее обнял.
C#:
string s;
string response;
StreamReader f = new StreamReader(@"C:\Users\Admin\Desktop\1.txt");
while ((s = f.ReadLine()) != null)
{
Uri url = new Uri($"...");//здесь во время формирования строки запроса используется 's'
response = new WebClient().DownloadString(url);
if (response.Contains("..."))
{
StreamWriter file = new StreamWriter(@"C:\Users\Admin\Desktop\01.txt", true);
file.WriteLine(s);
file.Close();
}
else
{
}
}
f.Close();
Console.ReadKey();
Потом мне немного помогли, а если быть точней, то предоставили такой код:
C#:
static void Main(string[] args)
{
string s;
var batch = new List<string>();
StreamReader f = new StreamReader(@"C:\Users\Admin\Desktop\1.txt");
while ((s = f.ReadLine()) != null)
{
batch.Add(s);
if (batch.Count == 100)
{
Parallel.ForEach(batch, (s) =>
{
Uri url = new Uri($"...");//здесь в во время формирования строки запроса используется 's'
var response = new WebClient().DownloadString(url);
if (response.Contains("..."))
{
StreamWriter file = new StreamWriter(@"C:\Users\Admin\Desktop\01.txt", true);
file.WriteLine(s);
file.Close();
}
else
{
}
});
batch.Clear();
}
}
if (batch.Any())
{
}
f.Close();
Console.ReadKey();
}
-"System.IO.IOException: "The process cannot access the file"
-"System.Net.WebException: "Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера."
-"System.AggregateException: "One or more errors occurred"
Методом научного непонятно на чём обоснованного понижения добрался до batch.Count == 5, исключений нет, но и время изменилось совсем каплю (0.76+-).
В общем и целом, ищу тех самых супер мега гуру, которые сделают за меня то, что мне нужно. Зато честно и откровенно. С меня + в репу, пожизненный респект и если надо, то вначале написал, что могу на мороженное закинуть. Заранее обнял.