为了账号安全,请及时绑定邮箱和手机立即绑定

怎么能让下面的内容执行完毕,线程才启动呢?

怎么能让下面的内容执行完毕,线程才启动呢?

C#
大话西游666 2022-07-01 07:07:27
send(client, "Getinfo", "Getinfo"); //发送获取用户信息的请求(登陆过程在上一个窗体完成了,暂存在服务端)string mark = "";string info = read(out mark); //读取服务端回传的信息和标记(mark)<-这里用的是同步读取MessageBox.Show("Get info("+info+","+mark+")");if (mark == "INFO"){string[] infos = info.Split('_');MyNick = infos[0];label2.Text = infos[0];label3.Text = infos[1];Tray("VICQ(" + MyNick + ")", VelClient.Properties.Resources._20150726114602183_easyicon_net_32);MessageBox.Show("Tray setting done");}ThreadPool.QueueUserWorkItem(new WaitCallback(GetMsg));//这里是设定一个线程,无限循环读取用户列表和信息等。用户列表是服务器每3秒向所有客户端发布一次的。MessageBox.Show("Working start");现在问题是按理说上面的read是同步读取,没有读取到内容就会卡在那里不动直到读取到内容,但是实际运行时,却因网络延迟,导致上面的read没有读取到info下面的线程就开始了,结果获取到的标记是USERLIST而不是INFO,怎么能让上面的执行完毕,下面的线程才启动呢?注:我想尽可能采用等待的方法,不想用循环判断直到某个条件达成在break的方法。
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

做一个bool变量,用来标记是否需要启动后面的线程。初始值=false,当接收到符合条件的数据后再赋值为true。启动线程前,判断变量=true才能启动线程。

查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信