C# Da Thread'i Durudurp Yeniden Baslatmada Sorun
-
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?
-
Kullanım artık kaldırılmış, şurada da sormuşlar. Cevap belki işine yarayabilir.
-
-
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
-
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
-
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); } } } }
-
DrKill,
Hocam console ortaminda degilde ben bu kod ile button durdura bastigimda durmasini, button devam et'e bastigimda kaldigi yerden devam etsin istiyorum
-
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.
-
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
-
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.