C# Multithreading Ve İşlem Süresi Hesabı
-
Thread th = new Thread(o => { SetText((string)o); }); Stopwatch watch = new Stopwatch(); watch.Start(); //işlemlerim watch.stop(); string sure = Convert.ToString((double)watch.Elapsed.Milliseconds / 1000); th.Start(sure);şeklinde yazdığım kodun çalışma zamanını hesaplamak istiyorum ama thread olayını tam bilmediğimden birtürlü yapamıyorum. Bu konuda bana yardımcı olabilecek kimse varmı? msdn, stackoverflow falan bakındım biraz ama yapamadım.
-
backgroundworker kullanarak progressi çok rahat gösterebilirsin. işini görürse bi araştır.
-
bi araştırıyım deniyim, sonucu yazarım. Çok sağol :)
sonuç: backgroundworkerı kullandım kullanmaya ama işlem süresini hesaplamıyo bu seferde, süre hep sıfır çıkıyo
wasd tarafından 03/Nis/13 17:21 tarihinde düzenlenmiştir -
Kullandığım bi yöntem var threadpool da asenkron çalıştırma. Onla ilgili bir örnek yaptım şimdi
bir class oluştur ben ismine UnbalancedThreadTester dedim
using System.Diagnostics; using System.Threading; namespace ThreadTester { public class UnbalancedThreadTester { public delegate void ThreadTesting(string result); public event ThreadTesting Tested; private void OnTested(string result) { if (Tested != null) Tested(result + " saniye"); } public void Basla(int count) { ThreadPool.QueueUserWorkItem(new WaitCallback(DoSomething),count); } private void DoSomething(object lastNumber) { Stopwatch watch = new Stopwatch(); int last = (int) lastNumber; watch.Start(); for (int i = 0; i < last; i++) { Thread.Sleep(100); } watch.Stop(); double time = watch.Elapsed.TotalSeconds; OnTested(time.ToString()); } } }class bittikten sonra bir tane buton oluştur ve click eventini aşağıdaki şekilde yaz (ben butonun ismini BtnStartTest koydum)
private void BtnStartTest_Click(object sender, EventArgs e) { UnbalancedThreadTester unbTester = new UnbalancedThreadTester(); unbTester.Tested += new UnbalancedThreadTester.ThreadTesting(unbTester_Tested); unbTester.Basla(50); } private void unbTester_Tested(string result) { MessageBox.Show(result); }dosomething metodunun içindeki işlem bittikten sonra formda bulunan unbTester_Tested metodu tetiklenecektir ve resultta bize işlemin ne kadar sürede tamamlandığı bildilrilecek..
asenkron olduğu için bağımsız olarak tekrar tekrar çalıştırılabilir ve kiltilenmez.. (tabii belli bir limiti var..) mesela ardarda bir kaç kez butona tıkladığımda sonuç şu şekilde :)

umarım işine yarar :)
unbalanced tarafından 03/Nis/13 18:02 tarihinde düzenlenmiştir
