关于线程 和事件的问题 求高手赐教

啥都得学呀 2014-10-19 09:17:06
本人刚接触WINFORM编程 遇到一个问题,求高手来指点一下

事情是这样的,我开了一个线程,线程内,要执行一些列工作,但是,某个工作,注册了一个事件,线程执行到此位置后要等待事件返回结果后,才能继续工作。代码结构如下:
(求有经验的高手给一条阳关大道,并且谢谢各位路过的看客!)

class Worker
{
//工作者线程
private Thread workThread;
public Worker() { /*构造函数*/ }
//开始工作
public void StartWork()
{
workThread = new Thread(new ThreadStart(Working));
workThread.Start();
}
//停止工作
public void StopWork()
{
workThread.Abort();
}
//工作是否完成标识
private bool complete = false;
//线程入口(N个任务)
public void Working()
{
while (!complete)
{
//===线程做第1个任务
//代码省略
//===线程做第2个任务
//代码省略
//===线程第3个特殊的任务(需要等待回调事件)
//o = new someObject();
//o.DoSomeThingEvent = new o.DoSomeThingEventHandler(someThingCallBack);
//o.DoSomeThing(); <-------执行完毕后,线程应该进入等待状态
//到此,线程应该停止,等待回调事件
//线程继续工作
//===线程做第4个任务
//代码省略
complete = true;
}
}
public void someThingCallBack(object sender, EventArgs e)
{
//线程开始工作
}
}

...全文
128 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyomumx 2014-10-20
  • 打赏
  • 举报
回复
使用AutoResetEvent或其他类似的线程同步对象,具体参考 AutoResetEvent 类(MSDN) 及WaitHandle的其他派生类
bdmh 2014-10-20
  • 打赏
  • 举报
回复
把等待事件放到线程外,既然要等待,用线程有何意义,你可以把要做的事情放在线程里,提高用户体验,返回线程处理完,去触发事件,让主线程去处理后面的事
於黾 2014-10-20
  • 打赏
  • 举报
回复
我觉得你的思路有问题 既然要等待事件完成,你就直接用同步的方式去执行就好了,为什么要注册回调事件?那不是异步方式了吗?

110,526

社区成员

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

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

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