能在事件结构里添加一个while循环并停止吗~~
在A事件分支里添加一个while循环,可是就算设置了停止条件,比如说在另一个事件分支B里设定了循环停止的条件,去停止A事件分支里的循环,却停止不了而且如果在某个事件分支里加了while循环的话,好像其它的事件分支的按钮甚至都按不了,这是为啥啊,求解~~allqq-mogudiandian-44all 事件不结束,操作不了的,不建议这么用 同问
但是有时候需要这样用
有什么好办法解决吗? 尝试B事件设一个值,A事件循环里面要判断此值停止循环。试试 这个不难,利用VALUE(signal)属性节点来触发事件并停止WHILE。
将图示中的勾选去掉即可,原因可看上面的说明! 我没试过,不过如果一个事件里放置循环,然后这个循环的结束需要这个事件外部(依然程序里)的触发,直觉上不可行。
你可以这样做:
程序主体架构要两循环,master/slaver结构,在master里,你放置你的event,检测全部的user interface的事件和其它一些也放在event框里的事件。按嵌入式开发准则,一个事件的处理,不能有太长的时间,一般控制在20ms之内,不然其它同在一个event框里的事件响应会滞后,很常见的就是你的user interface反映慢了很多,按下按钮,0.5或者1s才动作,显然是不行的。而如果你确实需要长时间处理某事件,有两种常见的方法:一是把处理分割,每一部分时间控制在20ms之内,这只能适用timeout这种在空闲的时候会自动运行的事件;另外一个更常用,在lv种更容易见到的就是用并行处理,说白了就是多个循环,做成一主多从的模式,你可以学习下master/slaver或者类似的producer/consumer,都是这种思想,很简单的。还有点时间,具体说下:
事件A里你本来放置循环的,现在不要了,改成放一个notifier,去通知slaver的循环。slaver循环怎么做呢?循环体内无限等待notifier,如果等到,开启一个子循环(就是把wait notifier输出连接到子循环框即可),子循环里来处理你本来在事件A内处理的东西,子循环和slaver循环的结束,你要用其它的notifier来通知了。
很多字,看不懂得话,有两点提醒:
第一楼那个停止不了,是因为你事件A在运行,没停止之前不会去运行事件B,所以不会产生事件A的停止标志,典型的死锁;
第六楼的方法确实可以按动按钮什么的,因为user interface是用另外的的线程来监视了,不过最终的处理还是要送回到后面板线程的,而这个时候后面板线程死锁,导致一个现象,你按了按钮,但不会有预期效果发生。
end!
页:
[1]