איך מפסיקים Thread?

jhammer

New member
איך מפסיקים Thread?

כתבתי class שמשתמש ב-Thread כדי לבצע חישוב ארוך. הבעייה היא שאני לא מצליח להפסיק אותו כשהחישוב מסתיים. מישהו יודע איך מפסיקים threads? קוד מצורף בהודעה הבאה
 

jhammer

New member
הנה קוד לדוגמא. מה עשיתי לא בסדר?

private Thread t; public void DoStuffWithThread(int times) { _times = times; _executeThread = true; t = new Thread(new ThreadStart(threadProc)); t.Start(); } private void threadProc() { for (int i = 0; i<_times; i++) { if (!_executeThread) return; SomeThingLongToDo(); } StopThread(); } public event EventHandler ThreadIsStopped; public void StopThread() { _executeThread = true; try { if (t.IsAlive) t.Abort(); } catch { } finally { t.Join(); // Here it get stuck t = null; } ThreadIsStopped(this,EventArgs.Empty); }
 

gilad g

New member
יישר אותו לימין עם

[תחילת קוד] ו-[סיום קוד]. וקח דקה לקרוא את התקנון (לינק אדום למעלה), תודה
 

jhammer

New member
הקוד מיושר לשמאל (אני מקווה)

private Thread t; public void DoStuffWithThread(int times) { _times = times; _executeThread = true; t = new Thread(new ThreadStart(threadProc)); t.Start(); } private void threadProc() { for (int i = 0; i<_times; i++) { if (!_executeThread) return; DoAVeryLongTask(); } StopThread(); } public event EventHandler ThreadIsStopped; public void StopThread() { _executeThread = true; try { if (t.IsAlive) t.Abort(); } catch { } finally { t.Join(); t = null; } ThreadIsStopped(this,EventArgs.Empty); }​
 
למעלה