111,076
社区成员




public class MultiThreadDemo
{
public Mutex mu1 = new Mutex(true, "mu1");
public void First(object obj)
{
System.Threading.Thread.Sleep(1000);
DelAppendText del= obj as DelAppendText;
del.Invoke("这是第一个方法");
this.mu1.ReleaseMutex();
}
public void Sencond(object obj)
{
this. mu1.WaitOne();
DelAppendText del = obj as DelAppendText;
del.Invoke("这是第二个方法");
}
}
public partial class FormMain : Form
{
MultiThreadDemo md = new MultiThreadDemo();
}
private void btnStart_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(md.First);
Thread t2 = new Thread(md.Sencond);
t2.Start(new DelAppendText(AppendText));
t1.Start(new DelAppendText(AppendText));
this.AppendText("线程启动完毕..");
}
public void AppendText(string text)
{
if (InvokeRequired)
{
Invoke(new DelAppendText(AppendText), text);
}
else
{
this.txtResult.Text += text + Environment.NewLine;
}
}
private void btnRelase_Click(object sender, EventArgs e)
{
md.mu1.ReleaseMutex();
}