首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

多线程同步有关问题

2012-02-20 
多线程同步问题有两个类a,b 和一个窗口开两个线程,怎样才能执行完a,然后执行b一、窗口代码public partial c

多线程同步问题
有两个类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 )
{...}
}
}

热点排行