VB 如何实现同时做多个事情
各位高手好,小弟初学菜鸟。我的软件目的:利用VB读取机床信息,然后再进行相关操作。我在读取机床信息过程中发现如下问题:从读取信息到实现操作的延时现象严重(PS:程序中对读...
各位高手好,小弟初学菜鸟。我的软件目的:利用VB读取机床信息,然后再进行相关操作。
我在读取机床信息过程中发现如下问题:从读取信息到实现操作的延时现象严重(PS:程序中对读取的信息处理过程较复杂)。
虽然同时调用不用的timer控件进行处理,但是感觉VB好像并没有同时调用各个timer。请问这是单线程的问题吗?
如果是单线程问题的话,请问是不是该采取多线程(一个线程采集数据,另一个线程处理数据)以提高处理速度?
如果不是单线程问题的话,请问有什么方法可以提高处理数据速度?
谢谢各位高手。 展开
我在读取机床信息过程中发现如下问题:从读取信息到实现操作的延时现象严重(PS:程序中对读取的信息处理过程较复杂)。
虽然同时调用不用的timer控件进行处理,但是感觉VB好像并没有同时调用各个timer。请问这是单线程的问题吗?
如果是单线程问题的话,请问是不是该采取多线程(一个线程采集数据,另一个线程处理数据)以提高处理速度?
如果不是单线程问题的话,请问有什么方法可以提高处理数据速度?
谢谢各位高手。 展开
展开全部
这个问题比较复杂,不是几十个字能说清楚的。 提两点建议吧:
1、在每个 Timer 的 OnTimer 事件中输出一下时间,最起码要精确到毫秒。
这样你可以通过分析输出的日志清楚的了解到发生延时究竟是在那个部分。
2、读取下位机数据无论是通过串口还是以太网通讯,都应该尽可能的使用事件触发。
以串口通讯为例,在 OnComm 事件中只需将串口的硬件缓冲区的数据读入自己的缓冲区就可以了。
而数据处理部分可以通过 Timer,每100毫秒检测一下缓冲区数据进行处理。
原理说着简单,实现起来往往不那么容易,得因地制宜看具体情况来写。
VB6不能直接支持多线程,VB.net可以。
1、在每个 Timer 的 OnTimer 事件中输出一下时间,最起码要精确到毫秒。
这样你可以通过分析输出的日志清楚的了解到发生延时究竟是在那个部分。
2、读取下位机数据无论是通过串口还是以太网通讯,都应该尽可能的使用事件触发。
以串口通讯为例,在 OnComm 事件中只需将串口的硬件缓冲区的数据读入自己的缓冲区就可以了。
而数据处理部分可以通过 Timer,每100毫秒检测一下缓冲区数据进行处理。
原理说着简单,实现起来往往不那么容易,得因地制宜看具体情况来写。
VB6不能直接支持多线程,VB.net可以。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询