c# ile Multi Thread Yapısı | Aynı anda çoklu işlemler - R10.net
  • 16-09-2020, 23:01:20
    #1
    c# da bir butona tıklayınca form donuyorsa Bunun temel sebebi temel iş parçacıklarının thread yapısı olmadan aynı anda dinlenemiyor oluşudur. Bu yapıya uyan güzel bir örnek hazırladım. Formunuzda bir buton var butona tıklayınca label 1 den 10 a kadar artacak. aralarda bir saniye bekleyecek. bunu for döngüsü ile sağladım. Form yapısı basitçe şöyle.



    normalde yapmanız gereken sadece şu kodlar.

    for (int i = 1; i < 11; i++)
    {
    System.Threading.Thread.Sleep(1000);
    label1.Text = i.ToString();
    }
    Fakat bu şekilde formu anlık kullanamazsınız donacaktır. Revizelerimizi şu şekilde yapalım.



    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication9
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    Thread thread = new Thread(() =>
       {
    
    for (int i = 1; i < 11; i++)
    {
    System.Threading.Thread.Sleep(1000);
    
    Invoke((Action)(() =>
       {
    label1.Text = i.ToString();
    
    }));
       
       }
       
       });
    
       thread.Start();
    
    }
    
    
    }
    }
    Artık formunuz donmayacak labeli anlık görebileceksiniz.

    Bu makalenin ayrıntıları ve bunun gibi yararlı paylaşımlar için bloguma göz atınız. 😊👌

    https://serhatsari.com/blog/icerik-c...-action-yapisi
    BURADA <<< Dijital dünyalara çözüm üretmekteyim. Davetlisiniz. 📺 ¯|_(ツ)_/¯