多线程同步问题

cwchyt 2007-10-13 03:14:50
有两个类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
}
}

请大家指教,最好能贴上修改后的代码
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
REMEX1980 2007-10-15
  • 打赏
  • 举报
回复
.NET 中多线程间资源共享与访问
icscs 著于2007-10-8 22:16:11
本文详细地描述一个定制的.NET类ThreadLockHelper(该类能在多线程环境下有效地共享资源),同时提供了.NET下多线程中资源共享及同步技术的概述。其helper类,将会帮助并简化.NET框架下高级程序员们对多线程的使用...
csharpguy 2007-10-13
  • 打赏
  • 举报
回复
改正一点
class B
{
public void B()
{
lock( A.SyncRoot )
{...}
}
}
csharpguy 2007-10-13
  • 打赏
  • 举报
回复
不要用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 )
{...}
}
}
dlutblh 2007-10-13
  • 打赏
  • 举报
回复
加个锁,在A.A执行完后把锁打开,B.B才执行
cwchyt 2007-10-13
  • 打赏
  • 举报
回复
不要用join()啊,最好用Mutex之类的
hzg_1998 2007-10-13
  • 打赏
  • 举报
回复
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();
}

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧