读书人

多线程同步有关问题

发布时间: 2012-02-20 21:18:23 作者: rapoo

多线程同步问题
有两个类a,b 和一个窗口
开两个线程,怎样才能执行完a,然后执行b
一、窗口代码
public partial class Form1 : Form
{
a A = new a();
b B = new b();

private void button1_Click(object sender, EventArgs e)
{
Thread t1=new Thread (new ThreadStart (A.A));
Thread t2 = new Thread(new ThreadStart(B.B));
t1.Start ();
t2.Start();
}

}

二、a代码
class a
{
public void A()
{
//方法A
}
}

三、b代码
class b
{
public void B()
{
//方法B
}
}

请大家指教,最好能贴上修改后的代码

[解决办法]
private void button1_Click(object sender, EventArgs e)
{
Thread t1=new Thread (new ThreadStart (A.A));
Thread t2 = new Thread(new ThreadStart(B.B));
t1.Start ();
t1.Join();
t2.Start();
}
[解决办法]
不要用join, 因为用join 的话就会把UI thread 给block住 等于没用线程,用户按了button1 之后界面会没反映

class A
{
public static readonly object SyncRoot = new object();

public void A()
{
lock( SyncRoot )
{ ... }
}
}

class B
{
public void B()
{
lock( SyncRoot )
{...}
}
}

读书人网 >C#

热点推荐