using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace ThreadTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } static EventWaitHandle eHandle = new EventWaitHandle(false, EventResetMode.ManualReset); bool flag = false; private void button1_Click(object sender, EventArgs e) { richTextBox1.Clear(); for (int i = 1; i <= 100; i++) { richTextBox1.AppendText(i + " "); if (i % 10 == 0) { eHandle = new EventWaitHandle(false, EventResetMode.ManualReset); Thread currentThread = new Thread(new ThreadStart(TestProcess));//開闢一個進度條執行緒 currentThread.Start(); eHandle.WaitOne(); richTextBox1.AppendText("i是10的倍數: i = " + i + " "); if (flag == true) { richTextBox1.AppendText("程式結束" + " "); break; } } } } private void TestProcess() { if (MessageBox.Show("確定要退出嗎?", "Message", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { flag = false; } else { flag = true; } eHandle.Set(); } private void richTextBox1_TextChanged(object sender, EventArgs e) { richTextBox1.SelectionStart = richTextBox1.Text.Length; richTextBox1.ScrollToCaret(); } } }