Listbox Çoklu İşlem Hk. [.Net İçerir]
-
Merhabalar,
Listbox içerisinde 20 tane proxy adresim var.
Bu proxy adreslerinin aynı anda check edilmesini istiyorum.
Thread ile bir döngü içerisinde yaptığımda tek tek sırayla check ediyor.
Amacım benim 20 tanesine birden aynı anda işlem yapması.
Tıkandım kaldım. Yol gösterebilecek var mı?
-
Hocam .net framework içindeki parallel class ı ile yapabilirsin.
https://docs.microsoft.com/tr-tr/dotnet/api/system.threading.tasks.parallel?view=netframework-4.8
-
parallel foreach ile yapabilirsin hocam..
burdaki mesajlarin birinde async olan nuget paketi de var onu da kullanabilirsin
https://stackoverflow.com/questions/15136542/parallel-foreach-with-asynchronous-lambda
Ya da threadpool kullanabilirsin.. bir for döngüsüyle 20 thread'i cagirirsin.. Cevap önemliyse async yapi kurman gerek
edit: isin icinden cikamazsan, kodlarini yollarsan aksam bakmaya calisirim
unbalanced tarafından 06/Şub/20 17:51 tarihinde düzenlenmiştir -
hocam alternatif olarak node.js yede bakabilirsin gözünü korkutmasın kullanımı gayet basit
-
her bir proxy kontrol methodunu task olarak oluştur onları list<task> içerisine at sonra listini whenall ile triggerla
-
hiç uğraşamam dersen;
https://www.nuget.org/packages/AsyncEnumerator/
AsyncEnumerator'i nugetten çek hocam.
Kullanımında birşey yok zaten anlatmaya da gerek yok :)
public static async void asyncTBT() { int Request = 0; int ResponseSucessfully = 0; int ResponseError = 0; Dictionary<string, string> urlList = new Dictionary<string, string>(); for (int i = 1; i <= 50; i++) { urlList.Add(i.ToString(), "http://tahribat.com"); } await urlList.ParallelForEachAsync(async (url) => { //Console.WriteLine(url.Key + " çalıştı.."); Console.Clear(); Console.WriteLine(string.Format("Request Count : {0} \n Response Successfully {1} \n Response Error {2}", Request, ResponseSucessfully, ResponseError)); Request++; var client = new HttpClient(); var response = await client.GetAsync(url.Value); if (response != null && (int)response.StatusCode == 200) { ResponseSucessfully++; } else { ResponseError++; } }, 10); // --> 10 thread birden çalışsın }