【发布时间】:2013-03-22 19:38:33
【问题描述】:
我是 C# 的初学者。当我使用 win.forms 时,我遇到了线程问题。我的应用程序冻结。这段代码有什么问题?我正在使用来自msdn 的微软示例。 这是我的代码:
delegate void SetTextCallback(object text);
private void WriteString(object text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(WriteString);
this.Invoke(d, new object[] { text });
}
else
{
for (int i = 0; i <= 1000; i++)
{
this.textBox1.Text = text.ToString();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Thread th_1 = new Thread(WriteString);
Thread th_2 = new Thread(WriteString);
Thread th_3 = new Thread(WriteString);
Thread th_4 = new Thread(WriteString);
th_1.Priority = ThreadPriority.Highest; // самый высокий
th_2.Priority = ThreadPriority.BelowNormal; // выше среднего
th_3.Priority = ThreadPriority.Normal; // средний
th_4.Priority = ThreadPriority.Lowest; // низкий
th_1.Start("1");
th_2.Start("2");
th_3.Start("3");
th_4.Start("4");
th_1.Join();
th_2.Join();
th_3.Join();
th_4.Join();
}
【问题讨论】:
-
没有例外,我的表单只是冻结了
-
您是否尝试过调试您的应用程序以查看它究竟是在哪里挂起的?
-
嗯,很高兴知道!到底什么时候结冰?
标签: c# multithreading winforms