🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / asenkron olarak veri indirmek Parallel ForEach Kullanımı

1-) C# RMOS - asenkron olarak veri indirmek Parallel ForEach Kullanımı

 

 

1-) Max 2 thread kullansın demek :  var numberList = Enumerable.Range(2, 1000).ToList();

 

 

Parallel.ForEach(list_lines, new ParallelOptions { MaxDegreeOfParallelism = 2 }, line =>

            {

 

            });

 

 

Parallel.ForEach(tumUrunLinkList, urunLink =>

                    {

                        yap(tumUrunLinkList, urunLink);

                    });

 

 

 

 public void yap(List<string> tumUrunLinkList, string urunLink)

        {

            try

            {

 

   string htmlTumVeriler = requestGet(urunLink);

 

   // to do write code

 

  }  }

 

 

  public string requestGet(string url)

        {

            string result = "";

            try

            {

                apiSifirla();

                HttpResponseMessage responseOtel = client.GetAsync(url).Result;

                result = responseOtel.Content.ReadAsStringAsync().Result;

                result = System.Net.WebUtility.HtmlDecode(result);

            }

            catch (Exception ex)

            {

                alertMesaj("Önemsiz\n" + ex.Message);

            }

 

 

            return result;

        }

 

 

LİST İLE KULLANCAKSAN LOCK KULLANMAK ZORUNDASIN

kaynak https://stackoverflow.com/questions/17416357/adding-to-a-list-in-a-parallel-foreach-loop-in-a-threadsafe-manner

 

 

var sync = new object();

            int sayac = 0;

            Parallel.ForEach(urlList, item =>

            {

 

                try

                {

                    var model = getUruns(item);

                    lock (sync)

                    {

                        sayac++;

                        SplashScreenManager.Default.SetWaitFormDescription(sayac + "\n Petzztedarik Yükleniyor...");

                        modelList.Add(model);

                    }

                }

                catch (Exception ex)

                {

                    Console.WriteLine("**-> " + ex.Message);

                }

 

            });

 

            Console.WriteLine( "bitti*****");

 

 

 

PARALLEL FORECHİN DOĞRU ÇALIŞTIGININ ISPATI

 

 

 void calistir()

        {

            List<string> urlList = new List<string>();

            for (int i = 0; i < 1000; i++)

            {

                urlList.Add(i.ToString());

            }

 

            int sayac = 0;

            Parallel.ForEach(urlList, item =>

            {

 

                try

                {

                    Console.WriteLine(item);

                    sayac++;

                }

                catch (Exception ex)

                {

                    Console.WriteLine("**-> " + ex.Message);

                }

 

            });

 

            Console.WriteLine("işlem bitti" + sayac);

        }

 

 

 2023 Mart 26 Pazar
 477