我创建了以下项目,向您展示我打算如何做事。但是我的主要项目会更大,并且会有多个班级。我只是想让这个工作正常,所以我知道我在编码时使用了很好的做法。所以我的表单有一个名为“button1”的按钮和一个名为“textBox1”的文本框,我有一个名为“Class1”的类,它有一个方法“testtest()”,我只是将Thread.Sleep放在testtest方法中,以便我可以找到它在另一个线程上运行。C#多线程多类gui应用程序,我正在做对吗?
这里是我的表单代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
delegate void Class1Deligate();
private void button1_Click(object sender, EventArgs e)
{
Class1 c = new Class1();
Class1Deligate testMethod = new Class1Deligate(c.testtest);
testMethod.BeginInvoke(endTestMethod, testMethod);
}
void endTestMethod(IAsyncResult ar)
{
}
}
}
,这里是我的一个类代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace Test
{
class Class1
{
public void testtest()
{
Thread.Sleep(8888);
MessageBox.Show("Done");
}
}
}
我是否正确地创建一个新线程?有人可以告诉我如何从class1中的testtest方法在运行时更新textbox1吗?我做了一个早期的文章,并被告知使用Dispatcher,但出于某种原因,似乎Dispatcher类不适用于我。
问候
我不确定我是否需要一个新线程,因为在某些示例中,我看到使用了Thread类,而在另一些示例中我看到使用了BeginInvoke,所以它真的让我困惑。 – Arya 2010-10-31 03:50:23
@Arya:那么一些开始一个新的线程,一些使用backgroundworker,一些使用ThreadPool。您需要确定在您使用它时最适合的方式。所有的方法都有其优点和缺点。 – Patrick 2010-10-31 11:09:57