请问怎么实现一个线程执行完后,另一个线程接着执行?

灰鸟会灰 2010-02-03 04:55:21
类似下面这个功能:1.始接收数据时,界面显示“正在接收……”,2.完毕后开始保存,此时界面显示“已接受,正在保存……”

thread show new Thread(delegate() {(Show ("正在接收…")));
show.start();
thread ta new Thread(new ThreadStart(A));
ta.start();


void show(string msg)
{
label1.Text=msg;
}
void A()
{
接收();

// 接收完后执行保存
thread show new Thread(delegate() {(Show ("已接收,正在保存…")));
show.start();
thread tb= new Thread(new ThreadStart(B));
tb.start();
}

void B()
{
保存();
label1.Text="保存成功";
}

现在第一个问题已解决,但是当我接收完时,启动另一个线程以让“正在保存……”显示出来,结果不是这样的。
我认为可能是保存的线程放在方法里,这就不能异步执行了。


请问怎么实现?即一个线程执行完后,另一个线程接着执行?
...全文
788 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
curtishang 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 svtme 的回复:]
引用 4 楼 curtishang 的回复:
主线程 先分配一个线程 叫做“接受” 给该线程赋一个回调函数(就是执行完后执行的函数) 回调函数中 再分配一个“保存”线程 保存线程的回调函数中 弹出提示框 告之保存完毕


代码怎么实现啊,
看不明白
[/Quote]

看看MSDN吧 上面解释得很清楚 我这个方法是通过BeginInvoke 和 EndInvoke 来实现的 其他人说的也都可行 关键字都给你了 自己找资料的示例看看 再尝试下 印象会更深

至于你的代码
thread show new Thread(delegate() {(Show ("已接收,正在保存…")));
show.start();
thread tb= new Thread(new ThreadStart(B));
tb.start();
这段明显有问题 正在保存 和提示保存完毕 分成2个线程 这是不对的 应该是 正在保存的线程执行完后通知主线程 保存完毕
灰鸟会灰 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ckl881003 的回复:]
你这个是个很简单的多线程操作啊,那你就直接用backgroundworker啊,简单明了,完全可以实现你的要求
[/Quote]
没写过,
但是我写的那个为什么不行呢?
ckl881003 2010-02-03
  • 打赏
  • 举报
回复
你这个是个很简单的多线程操作啊,那你就直接用backgroundworker啊,简单明了,完全可以实现你的要求
灰鸟会灰 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 curtishang 的回复:]
主线程 先分配一个线程 叫做“接受” 给该线程赋一个回调函数(就是执行完后执行的函数) 回调函数中 再分配一个“保存”线程 保存线程的回调函数中 弹出提示框 告之保存完毕
[/Quote]

代码怎么实现啊,
看不明白
curtishang 2010-02-03
  • 打赏
  • 举报
回复
参考MSDN BeginInvoke 和 EndInvoke 的说明
curtishang 2010-02-03
  • 打赏
  • 举报
回复
主线程 先分配一个线程 叫做“接受” 给该线程赋一个回调函数(就是执行完后执行的函数) 回调函数中 再分配一个“保存”线程 保存线程的回调函数中 弹出提示框 告之保存完毕
xiaoyuzi 2010-02-03
  • 打赏
  • 举报
回复
线程函数A里执行show函数需要用委托
owenliangbin 2010-02-03
  • 打赏
  • 举报
回复
早上看到一个好像叫manualResetEvent的东西,估计合适你。
老Key 2010-02-03
  • 打赏
  • 举报
回复
没遇到过,帮忙顶了。。。。

111,120

社区成员

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

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

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