線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2128
推到 Plurk!
推到 Facebook!

請問跨執行緒時候的執行緒suspend

 
qubeley2004
一般會員


發表:52
回覆:71
積分:24
註冊:2004-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-02 20:10:35 IP:61.229.xxx.xxx 訂閱
我是用個執行緒讓progressbar去不斷的累加,想要用一個button2去暫停他    可是遇到跨執行緒的問題,當我執行suspend的時候他顯示執行緒沒有執行所以無法暫停    請問要如何才能正確的暫停呢??以下是我的程式碼    <textarea class="c#" rows="10" cols="60" name="code"> using System; using System.Threading; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public delegate void mydelegate(); ThreadStart mythreadstart1; Thread mythread1; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { start(); } private void start() { mythreadstart1 = new ThreadStart(ddkbefore); mythread1 = new Thread(mythreadstart1); mythread1.Start(); } private void ddkbefore() { this.Invoke(new mydelegate(ddk)); } private void ddk() { for (int a = 1; a < 99; a ) { progressBar1.Value ; } } private void button2_Click(object sender, EventArgs e) { mythread1.Suspend(); } } } </textarea>
fPhoenix
一般會員


發表:0
回覆:20
積分:19
註冊:2005-08-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-05 16:05:49 IP:220.229.xxx.xxx 訂閱
你執行ddk的時機已經不是執行緒的時候了,當你執行完this.Invoke的時候,執行緒就已經結束。

修改了幾個地方:
<textarea class="c#" rows="10" cols="60" name="code">public delegate void mydelegate(int value); private void ddkbefore() { for (int a = 1; a < 99; a ) { Thread.Sleep(1000); this.Invoke(new mydelegate(ddk), new object[] { a }); } } private void ddk(int value) { progressBar1.Value = value; } </textarea>
qubeley2004
一般會員


發表:52
回覆:71
積分:24
註冊:2004-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-13 09:54:28 IP:61.224.xxx.xxx 訂閱
感謝您的回答~

想在請問為什麼如果把Thread.Sleep(1000) 刪掉的話

那按下停止的按鈕之後還是會出現"執行緒沒有執行所以無法停止"的錯誤呢??
fPhoenix
一般會員


發表:0
回覆:20
積分:19
註冊:2005-08-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-13 23:26:01 IP:219.69.xxx.xxx 訂閱
因為迴圈數太少,你按下暫停之前,程式就先執行完了。
系統時間:2024-05-13 5:50:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!