【发布时间】:2015-05-19 20:19:22
【问题描述】:
我正在使用 VS 2012。谁能举个简单的例子,为什么我需要 control.Invoke / BeginInvoke 使用其他线程时。 我试图通过其他线程更改文本框中的文本,但一切正常。我知道在这种情况下,必须从 gui 线程调用更改。 但是当线程也无法正常工作时,我找不到示例。 谢谢。 利隆
例如:我有这段代码,但它工作正常:
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(ChangeText));
t.Start();
}
private void ChangeText()
{
for (int i = 0; i < 50; ++i)
{
textBox1.Text += "a";
Thread.Sleep(100);
}
}
【问题讨论】:
-
如果没有示例代码,我们无法告诉您为什么您的方法有效,或者它是否是甚至正确的线程。
-
这是一个时间问题,尝试快速更新很多控件,你会发现原因。快速(而且很多)只是说明问题,并不意味着它不会发生在单个控件上。它可能不会在今天或明天崩溃,但最终你会随机得到它。
-
例如我有这段代码,但一切都只是 private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(ChangeText)); t.Start(); } private void ChangeText() { for (int i = 0; i
-
private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(ChangeText)); t.Start(); } private void ChangeText() { for (int i = 0; i
标签: c# multithreading invoke