MessageBox and while loop C#

问题描述 投票:0回答:1

我正在修改现有的C#代码以操纵活塞。每隔30毫秒,我都会通过事件直接反馈该活塞的位置。该值存储在用于获取活塞当前位置的全局变量中。

我想要达到的目标:对于给定的距离输入(A-> C),我希望活塞以全速行进距离的95%(A-> B),然后在其余速度下变慢5%(B-> C)。

我可以访问定义活塞的速度和终点的命令:pos(速度,终点)。

但是,如果我编写该代码:

pos(fullSpeed,B);
pos(reducedSpeed, C);

活塞直接从全速转为降速

我试图使用while循环将活塞的当前位置与目标位置进行比较,但是,进入while循环时,存储活塞位置的变量不再更新。

但是,我注意到通过在中间插入一个MessageBox,位置值不断更新,我只需单击“确定”即可启动第二个命令。

pos(fullSpeed,B);
MessageBox.show("Wait");
pos(reducedSpeed, C);

我想知道为什么“ while”循环会停止位置变量的更新,但是MessageBox不会。我的意思是,只要不单击“确定”按钮,此框就会阻止我执行任何操作,这对我来说具有一段时间的循环行为。我还有其他方法可以代替MessageBox吗?

我对C#几乎一无所知,也没有任何支持。我试图查看文档,但是没有找到答案(我可能错过了)。任何线索都值得欢迎。

c# while-loop messagebox
1个回答
0
投票

我相信您想要做的是添加呼叫:

Application.DoEvents();

这将允许您的应用程序处理发布的消息(事件),这将允许更新该全局变量。

© www.soinside.com 2019 - 2024. All rights reserved.