請問跨執行緒時候的執行緒suspend |
|
qubeley2004
一般會員 發表:52 回覆:71 積分:24 註冊:2004-07-13 發送簡訊給我 |
我是用個執行緒讓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 發送簡訊給我 |
你執行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 發送簡訊給我 |
|
fPhoenix
一般會員 發表:0 回覆:20 積分:19 註冊:2005-08-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |