C#事件同步问题请教,急,请各位大牛指导
我现在做的代码功能:
调用第三方控件,通过该控件控制设备,控制设备的所有指令均为异步方式,即调用后立刻返回,控件通过事件返回设备真正的响应结果.
问题:
我在代码中调用控件方法后,接着立即等待事件结果,但是却一直等待不到,直到等待方法结束退出后,事件信息才会上送上来。 为什么每次都是等待方法推出后,事件信息才会上送上来呢?
发送指令方法()
{
//调用控件发送指令
………………
//等待指令结果,最多等待10秒
while(true)
{
//结果状态已改变
break;
}
}
事件接收方法()
{
//修改结果状态
}
[解决办法]
你如果真想异步编程,你又“等待”干什么?
这就是说的“.net4.5里边async/await语法比较坑爹”的地方。它错误地宣传了、而且许多中国的程序猿也替它错误宣传了这个,使得更多程序猿只会用同步顺序操作的思想去“设计”异步程序。让你的程序慢100倍甚至死机这也许是小事,关键是耽误了.net framework的好名声。
你的异步程序通常是这样的,例如
void 发送指令方法(msg)
{
var x = 获取调用的控件实例();
x.设备响应事件 += (s,e) =>
{
var datas = e.接收到的信息;
事件接受方法(datas);
}
x.发送指令(msg);
}