folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Da Thread'i Durudurp Yeniden Baslatmada Sorun



C# Da Thread'i Durudurp Yeniden Baslatmada Sorun

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    Thrad ile calistirdigim bir metodu durudurup kaldigi yerden devam ettirmek istiyorum.

    Pause buttonunun click olayina

    islem.Suspend();   ve tekrar calistir Buttonunun clik olayina isem.resume();

    veriyorum.Ama nedense bu iki moteodun alti yesil cizgi ile ciziliyor hata degil ama söyle bir uyari geliyor.

    Warning 1 'System.Threading.Thread.Suspend()' is obsolete: 'Thread.Suspend has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202'

    Kod calisiyor ama yinede canimi sıkıyorç

    bu neyden kaynaklarniyor? ve ne yapmaliyim?
     

     

     

     

     

     

     

     

     

     

     

     

    Kanakan tarafından 06/Kas/15 22:41 tarihinde düzenlenmiştir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pSkpt
    pSkpt's avatar
    Kayıt Tarihi: 10/Aralık/2010
    Erkek

    Kullanım artık kaldırılmış, şurada da sormuşlar. Cevap belki işine yarayabilir.

    http://stackoverflow.com/questions/4509067/c-sharp-threading-suspend-in-obsolete-thread-has-been-deprecated

     


    İmza...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo

    thread öyle cart die durdurabileceğin bir şey değildir

    durdur = True

    deyip

    while durdur True {

    sleep 100 ms

    }

     

    tarzı kodlar serpiştirmen lazım thread'ine 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    2 sene önce paralel programlama için c# kullanmıştım. Yoksa nefret ederim kendisinden.

    Suspend resume felan .net 2.0 dan sonra silinmek üzere deprecated yapılmış msdn öyle diyor.

    Birde thread çalışırken tam olarak kaldığı yerde durdurmak biraz zor benim bildiğim.

    Ya mutex kullanıp her satırda mutex kontrolü yapacaksın thread içinde

    ya da thread i komple durdurup yeniden komple başlatacaksın.

    Ya da şöyle bir örnek vereyim.

    bool durThread1 = false; diye bir global değişken oluştur..

     

    thread'in içindede

    while (durThread1 == true)

         thread.sleep(1);

    gibi bir komutta kullanabilirsin. mutex de aynı mantık zaten. Ama dediğim gibi thread'in kaldığı yerde durdurup devam ettirmek çok çok zor. Ancak HER SATIRDA mutex ile durdurup devam ettirirsen belki.

     

    Bak TBT de bir kaç örnek yapıp sorular sormuşum :

    http://www.tahribat.com/forum/c-task-parallel-library-sorusu-194704

     

    DrKill tarafından 06/Kas/15 23:11 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    Arkadaslar verdiginiz ceveplar icin tesekkürler.Fakat c# da yeni sayilirim.Simdi söyle bir kodum var,

    using System.Threading;   // bunu Uzaya kismana ekle
    
    Thread islem;             // Global nesne olarak atnimla
    
    
    private void Test()       // Methodumuz bu olsun
    {
    for(int x=0; x<=10000;x++)
    {
    listBox1.items.Add(x.inToString());
    }
    }
            // Ve Thradi calistiriyoruz
    private void button1_Click(object sender, EventArgs e)
            {
                        islem = new Thread(new ThreadStart(Test));
                        islem.Start();
            }
    
            // Durdurmak icin
    private void button2_Click(object sender, EventArgs e)
            {
                        islem.Abort();
            }
    
    
    private void button3_Click(object sender, EventArgs e)
            {
                    islem.Suspend();
    		}
    
    private void button4_Click(object sender, EventArgs e)
            {
                     islem.Resume();
                
            }

     

    Ben bu kodda durudurp yeniden baslatmayi bu yukradaki gibi yapiyorum , kod calisiyor ama uyari veriyor.Bunu  bana uyarlayabilirmisiniz?

    simdiden tesekkürler

     

    Kanakan tarafından 06/Kas/15 23:19 tarihinde düzenlenmiştir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Threading;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            private static Thread islem;
            private static bool threadDurdur = false;
            static void Main(string[] args)
            {
                islem = new Thread(new ThreadStart(Test));
                islem.Start();
                Thread.Sleep(1000);
                threadDurdur = true;
                Thread.Sleep(3000);
                threadDurdur = false;
                islem.Join();
                islem.Abort();
            }
    
            private static void Test()       // Methodumuz bu olsun
            {
                for (int x = 0; x <= 10000; x++)
                {
                    while (threadDurdur == true) Thread.Sleep(10);
                    Console.WriteLine(x);
                }
            }
    
    
    
    }
    }
    

     


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    DrKill,

    Hocam console ortaminda degilde ben bu kod ile button durdura bastigimda durmasini, button devam et'e bastigimda kaldigi yerden devam etsin istiyorum

     

    Kanakan tarafından 07/Kas/15 00:16 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    Kanakan bunu yazdı

    DrKill,

    Hocam console ortaminda degilde ben bu kod ile button durdura bastigimda durmasini, button devam et'e bastigimda kaldigi yerden devam etsin istiyorum

     

    Armut piş ağzıma düş istiyorsun hocam. Kalanını biraz azim et. Çok zor değil. Hatta zor değil.

     

    DrKill tarafından 07/Kas/15 00:48 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    hocam verdigin örnekte  thread belirli bir süre durup geri calisiyor.

    ben anlatamadim galiba, ben durdurdugumda süre olmayacak.Süreli durdurma demedim ki ben.

    Ben buttona bastigimda istedigim sürece duracak, ve baska bir buttona bastigimda kaldigi yerden devam edecek.

    neyse önemli degil.

    tesekkürler

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    Kanakan bunu yazdı

    hocam verdigin örnekte  thread belirli bir süre durup geri calisiyor.

    ben anlatamadim galiba, ben durdurdugumda süre olmayacak.Süreli durdurma demedim ki ben.

    Ben buttona bastigimda istedigim sürece duracak, ve baska bir buttona bastigimda kaldigi yerden devam edecek.

    neyse önemli degil.

    tesekkürler

    Hocam zaten verdiğim kodda sure ile durdurmana gerek yok ki? Sen thread i nasıl durduğumu anladın mı? Ben onu 3 saniyeliğine durdursun gözünle işlem surecini algıla diye koydum. Bir tane button un click event ine yerleştireceksin bool değişkeni hepsi bu, yapacağın bu ama onuda hazır istiyorsun üstüne anlayamadınız galiba diyorsun.

    Sana tavsiyem biraz temel programlama çalışman.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 1277 Toplam Mesaj: 10
thread metod