• 10-07-2019, 18:51:05
    #1
    Merhaba. Bir adet C# konsol uygulamam var. Kısaca anlatayım yapmak istediğimi.

    Örneğin "dosya.txt" dosyasında alt alta "username(ikinoktaüstüste)password" bilgileri var. Bu örnekte "5" adet kullanıcı adı ve şifremiz olsun dosyada.

    Normalde for döngüsü ile bu kullanıcılara ben tek tek işlem yaptırabiliyorum. Ancak istediğim for döngüsü gibi hepsinin birden açılıp işlem yapması.

    Programı başlattığımda bu kullanıcı adı şifreleri sayıp ona göre belirlediğim işlemi her biri için ayrı ayrı yapması gerekiyor.

    Yani for döngüsündeki olayı aynı anda yapılması olarak düşünebiliriz. Tek tek yapmak yerine aynı anda yapması gerek.

    Basit bir örnekle açıklayabilir misiniz?

    Teşekkürler.
  • 10-07-2019, 18:57:06
    #2
    https://www.google.com/search?q=c%23...obile&ie=UTF-8

    static Thread islem;
    static Thread islem2;
    static void Main(string[] args)
    {
    islem = new Thread(new ThreadStart(Calis));
    islem2 = new Thread(new ThreadStart(Calis2));
    islem.Start();
    islem2.Start();
    }
    static void Calis()
    {
    for (int i = 0; i < 100000; i++)
    {
    Console.WriteLine("Eleman " + i);
    }
    }
    static void Calis2()
    {
    for (int i = 0; i < 100000; i++)
    {
    Console.WriteLine("Item " + i);
    }
    }
  • 10-07-2019, 18:59:52
    #3
    ssyazilim adlı üyeden alıntı
    https://www.google.com/search?q=c%23...obile&ie=UTF-8

    static Thread islem;
    static Thread islem2;
    static void Main(string[] args)
    {
    islem = new Thread(new ThreadStart(Calis));
    islem2 = new Thread(new ThreadStart(Calis2));
    islem.Start();
    islem2.Start();
    }
    static void Calis()
    {
    for (int i = 0; i < 100000; i++)
    {
    Console.WriteLine("Eleman " + i);
    }
    }
    static void Calis2()
    {
    for (int i = 0; i < 100000; i++)
    {
    Console.WriteLine("Item " + i);
    }
    }
    Teşekkürler ilginize. Thread olaylarını araştırdım ancak kafama takılanlar var.

    Bu olayda 2 işlem aynı anda olacak değil mi? Misalen benim dosyamda 10 adet kullanıcı varsa nasıl olacak? İkişer ikişer mi?

    Yani dinamik olarak yapmak istiyorum ancak acemi olduğumdan anlatamıyorum sanırım.

    5 kullanıcı varsa 5 işlem aynı anda, 8 kullanıcı varsa 8 işlem örnek.
  • 10-07-2019, 19:00:22
    #4
    Normal Programlama mantığına aykırı dediğin olay aynı anda işlem yapamazsın.Bence sen paralel programlamaya yönelmelisin yani o for dunusunu paralel olarak çalıştırırsan oluşacak thread sayısı kadar aynı anda işlem yapabilirsin.
    Ama thread yönetimi zordur bu işi Parallel sınıfına bırakabilirsin. Yanlış hatırlamıyorsam Parallel sınıfının Parallel.For diye çağırabileceğin bir for döngüsü vardı.
  • 10-07-2019, 19:00:41
    #5
    tristy adlı üyeden alıntı
    Merhaba. Bir adet C# konsol uygulamam var. Kısaca anlatayım yapmak istediğimi.

    Örneğin "dosya.txt" dosyasında alt alta "username(ikinoktaüstüste)password" bilgileri var. Bu örnekte "5" adet kullanıcı adı ve şifremiz olsun dosyada.

    Normalde for döngüsü ile bu kullanıcılara ben tek tek işlem yaptırabiliyorum. Ancak istediğim for döngüsü gibi hepsinin birden açılıp işlem yapması.

    Programı başlattığımda bu kullanıcı adı şifreleri sayıp ona göre belirlediğim işlemi her biri için ayrı ayrı yapması gerekiyor.

    Yani for döngüsündeki olayı aynı anda yapılması olarak düşünebiliriz. Tek tek yapmak yerine aynı anda yapması gerek.

    Basit bir örnekle açıklayabilir misiniz?

    Teşekkürler.
    ne çekmiştim bu multithread olayından belki işinize yarar

    public void DegerArttir1()
    {
    for (int i = 1; i <= 100; ++i)
    {
    progressBar1.Value += 1;
    lbThreads.Items.Add("Thread 1");
    Thread.Sleep(10);
    }
    } public void DegerArttir2()
    {
    for (int j = 1; j <= 100; ++j)
    {
    progressBar2.Value += 1;
    lbThreads.Items.Add("Thread 2");
    Thread.Sleep(100);
    }
    }

    public void DegerArttir3()
    {
    for (int k = 1; k <= 100; ++k)
    {
    progressBar3.Value += 1;
    lbThreads.Items.Add("Thread 3");
    Thread.Sleep(150);
    }
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
    th1 = new Thread(new ThreadStart(DegerArttir1));
    th2 = new Thread(new ThreadStart(DegerArttir2));
    th3 = new Thread(new ThreadStart(DegerArttir3));
    th1.Start();
    th2.Start();
    th3.Start();
    }
    Fecr 15-16
    15. İnsan ise; Rabbi onu deneyip de kendisine ikramda bulunduğunda, ona bol bol nimetler verdiğinde, "Rabbim bana ikram etti" der.
    16. Ama onu deneyip rızkını daraltınca da, "Rabbim beni aşağıladı" der.
    Sadakallahul Azim
  • 10-07-2019, 19:08:13
    #6
    İsteğinizi tam anlayamadım ama ayni anda birden fazla kod blogunun çalışmasını istiyorsanız multi thread ler tanimlamalisiniz. Başlattığıniz threadler aynı anda işlem yapar.

    tristy adlı üyeden alıntı
    Teşekkürler ilginize. Thread olaylarını araştırdım ancak kafama takılanlar var.

    Bu olayda 2 işlem aynı anda olacak değil mi? Misalen benim dosyamda 10 adet kullanıcı varsa nasıl olacak? İkişer ikişer mi?

    Yani dinamik olarak yapmak istiyorum ancak acemi olduğumdan anlatamıyorum sanırım.

    5 kullanıcı varsa 5 işlem aynı anda, 8 kullanıcı varsa 8 işlem örnek.
  • 10-07-2019, 20:04:09
    #8
    ByEBA adlı üyeden alıntı
    Normal Programlama mantığına aykırı dediğin olay aynı anda işlem yapamazsın.Bence sen paralel programlamaya yönelmelisin yani o for dunusunu paralel olarak çalıştırırsan oluşacak thread sayısı kadar aynı anda işlem yapabilirsin.
    Ama thread yönetimi zordur bu işi Parallel sınıfına bırakabilirsin. Yanlış hatırlamıyorsam Parallel sınıfının Parallel.For diye çağırabileceğin bir for döngüsü vardı.
    Herkese teşekkür ediyorum. Paralel for olayı ile istediğimi yaptım.

    Teşekkürler tekrardan.