private void button4_Click(object sender, EventArgs e) { DateTime dt1 = DateTime.Now; if (textBox3.Text == "") richTextBox3.Text += "2的0次方為1"; else { ManualResetEvent[] mr = new ManualResetEvent[int.Parse(textBox3.Text)]; for (int i = 1; i <= int.Parse(textBox3.Text); i++) { //int poolnum = i; int temp = new int(); temp = i; Control.CheckForIllegalCrossThreadCalls = false; mr[temp - 1] = new ManualResetEvent(false); ThreadPool.QueueUserWorkItem(delegate(object num) { long pre = 1; for (int n = 1; n <= temp; n++) { Thread.Sleep(1); pre *= 2; } richTextBox3.AppendText("2的" + temp.ToString() + "次方為: " + pre.ToString() + "\r\n"); mr[temp - 1].Set(); }); } WaitHandle.WaitAll(mr); } DateTime dt2 = DateTime.Now; label8.Text = (dt2 - dt1).TotalSeconds.ToString(); }
當我丟進去50個任務的時候,他就會漏掉幾個數(shù)字不會計算。還有現(xiàn)在加了WaitHandle.WaitAll(mr);之后mr[temp-1].set()都執(zhí)行不到,程序就會死等在那里不動了。高手指點一下啊。
- 1 回答
- 0 關(guān)注
- 383 瀏覽
添加回答
舉報
0/150
提交
取消