VB.net无限循环/中断驱动

VB.net无限循环/中断驱动,vb.net,Vb.net,我对VB.net还是相当陌生,我正在尝试编写一个程序,不断地监视从PLC中提取的信息,并在信息发生变化时进行更新 我曾与微控制器合作过,我知道制作无限循环效果很好。我在VB.net代码中遇到的问题是,当它循环时,表单基本上冻结,标签永远不会更新。我尝试使用下面的代码 Do While True *Code* Loop 所以,我想我的第一个问题是,拥有一个持续更新数据的程序的最佳方式是什么。似乎无限循环不是答案 我的第二个问题是,像微控制器一样,VB.net是否可能是一个

我对VB.net还是相当陌生,我正在尝试编写一个程序,不断地监视从PLC中提取的信息,并在信息发生变化时进行更新

我曾与微控制器合作过,我知道制作无限循环效果很好。我在VB.net代码中遇到的问题是,当它循环时,表单基本上冻结,标签永远不会更新。我尝试使用下面的代码

Do While True
        *Code*
    Loop
所以,我想我的第一个问题是,拥有一个持续更新数据的程序的最佳方式是什么。似乎无限循环不是答案

我的第二个问题是,像微控制器一样,VB.net是否可能是一个中断驱动程序而不是事件驱动程序。我的程序总是在运行,在数据进入时更新数据,但如果按下一个按钮,它基本上可以脱离循环。或者我的想法是,暂时离开循环以执行另一个函数,然后继续回到循环中

我已经查看了System.Timers名称空间,但对于它们如何工作还不是100%清楚。这似乎是我问题的潜在答案。如果我有一个计时器,它每一秒钟执行一次代码,那么只要表单运行正常,这一秒钟就会发生?假设前面的语句是正确的,如果代码从1秒开始运行,并且在代码运行时按下一个按钮,那么该按钮将被忽略,还是该事件将在代码完成后发生

任何有助于我学习的东西都会让我大开眼界

您可以使用

Application.DoEvents()

-NET framework提供的方法,它本质上更新了您的表单,以应用同时发生的所有更改。

使用线程或backgroundworkerAs@puropoix说,您可以通过将循环放在另一个线程中来保持UI的响应性。或者(更符合您的“中断驱动”思想),您可以使用计时器定期检查数据。当数据可用时,无论您如何“从PLC提取信息”,都可能引发事件,在这种情况下,最好的方法是处理该事件。谢谢!我还没来得及看线程,我将在一天结束前两天,但后台工作人员似乎是我要找的。另外,我是如何获得信息的并没有引发一个事件,这本来是很好的,因为我不想去检查它。谢谢你的建议!干杯我创建了一个多线程示例,因为它可能会对您有所帮助。嘿,谢谢您的示例!我最终还是和幕后工作人员在一起。它非常简单,做了需要做的事情。谢谢大家提供的所有新信息,现在我有了更多的火力!在推荐使用Application.DoEvents之前,最好停下来