ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: BrandSex

VBA的多线程开发

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-11-21 15:14 | 显示全部楼层
VBA中开发多线程是很不稳定的,用timer控件也可以实现多线程.

TA的精华主题

TA的得分主题

发表于 2007-11-21 15:34 | 显示全部楼层

楼主是通讯行业的导游

不知道导谁?

你搞也要有点水平

 

[em18]

TA的精华主题

TA的得分主题

发表于 2007-11-21 16:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
BrandSex老师出品,必是热门中的热门

TA的精华主题

TA的得分主题

发表于 2007-11-21 22:15 | 显示全部楼层

在vb中实现多线程是很不理想的,尽管能实现,但不稳定,是vb的一个缺陷,真正实现多线程用vb.net还可以。

过去,Visual Basic 开发人员创建的应用程序都是程序任务依次执行的同步应用程序。虽然多线程应用程序因多个任务几乎同时运行而具有更高的效率,但使用早期版本的 Visual Basic 来创建这样的应用程序却很困难。

一项称为多任务处理的操作系统功能使多线程程序成为可能,它能模拟同时运行多个应用程序的功能。虽然多数个人计算机都只安装了一个处理器,但现代操作系统通过将处理器时间分配给多段可执行代码(称为线程),提供了多任务处理功能。线程可以代表整个应用程序,但通常只代表应用程序中可单独运行的一部分。操作系统根据线程的优先级、上次运行线程后经过的时间等因素为每个线程分配处理时间。在执行耗时的任务(如文件输入和输出)时,多线程能够显著提高性能。

但要注意一个问题。虽然多线程可以提高性能,但每个线程都需要额外的内存来创建线程,还需要处理器时间来运行线程。如果创建的线程过多,反而会降低应用程序的性能。在设计多线程应用程序时,应在添加更多线程所获得的好处及其成本之间进行权衡。

多任务处理成为操作系统的一部分已经很长时间了。但直到最近,Visual Basic 程序员也只能通过非正式发布的功能,来执行多线程任务,或者通过使用 COM 组件或操作系统的异步组件,来间接实现此功能。而 .NET 框架在 System.Threading 命名空间中为开发多线程应用程序提供了全面的支持。

本文讨论多线程的一些优点以及如何使用 Visual Basic .NET 来开发多线程应用程序。虽然 Visual Basic .NET .NET 框架使多线程应用程序的开发变得很简单,但本文主要面向中高级开发人员,以及正在从 Visual Basic 的早期版本过渡到 Visual Basic .NET 的开发人员。对于 Visual Basic .NET 的初学者,请首先阅读 Visual Basic Language Tour(英文)中的相应主题。

本文并非是对多线程编程的全面讨论。要获得更多的信息,请参阅本文最后列出的其他资源。

多线程处理的优点

同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。多线程处理可以同时运行多个过程。例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。由于多线程应用程序将程序划分成独立的任务,因此可以在以下方面显著提高性能:

多线程技术使程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。

当前没有进行处理的任务可以将处理器时间让给其他任务。

占用大量处理时间的任务可以定期将处理器时间让给其他任务。

可以随时停止任务。

可以分别设置各个任务的优先级以优化性能。

是否需要创建多线程应用程序取决于多个因素。在以下情况下,最适合采用多线程处理:

耗时或大量占用处理器的任务阻塞用户界面操作。

各个任务必须等待外部资源(如远程文件或 Internet 连接)。

例如,用于跟踪 Web 页上的链接并下载满足特定条件的文件的 Internet 应用程序“robot”。这种应用程序可以依次同步下载各个文件,也可以使用多线程同时下载多个文件。多线程方法比同步方法的效率高很多,因为即使在某些线程中远程 Web 服务器的响应非常慢,也可以下载文件。

创建新线程

创建线程最直接的方法是创建新的线程类实例,并使用 AddressOf 语句为要运行的过程传递委托。例如,以下代码将名为 SomeTask 的子过程作为单独的线程运行。

Dim Thread1 As New System.Threading.Thread(AddressOf SomeTask)

Thread1.Start

' 此处的代码立即运行。

以上所述就是创建和启动线程的方法。在线程 Start 方法调用之后的任何代码将立即运行,而无需等待前一个线程运行结束。

TA的精华主题

TA的得分主题

发表于 2007-11-22 13:47 | 显示全部楼层
QUOTE:
以下是引用BrandSex在2007-11-19 10:56:49的发言:

你的VBA代码速度超慢吗?你刚买的双核CPU感觉总有个CPU处于空闲状态吗?你的VBA代码有很多任务在同时完成吗?OK,你需要使用多线程,不过使用多线程前要记住一点:不要为了用多线程而用多线程.

使用多线程要用到API,同步,总之很繁琐的,如何你看了下面的代码没有感觉到不想看了,请回贴我再继续,否则我写了没人看也没什么意思

Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
    ByVal dwMilliseconds As Long) As Long

请教一下,双核CPU等同于双CPU吗????????你知道什么是多线程吗?????????他们是如何运行的???????????????????????????????

[em06][em06][em06]

TA的精华主题

TA的得分主题

发表于 2007-11-23 00:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用wsri在2007-11-19 20:59:49的发言:
看来楼上的都是牛人啊!但大家都拿出点象狼版和山版那样的爱心,真正为论坛里的菜鸟提供点有价值的教程,不要老是显摆自己的知识和能力。我要代表广大菜鸟说一句:你做到了自然就会得到大家的尊重!!!否则你就是有天大的本事我们也鄙视你!!!

[em09]

TA的精华主题

TA的得分主题

发表于 2007-11-23 15:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用wsri在2007-11-19 20:59:49的发言:
看来楼上的都是牛人啊!但大家都拿出点象狼版和山版那样的爱心,真正为论坛里的菜鸟提供点有价值的教程,不要老是显摆自己的知识和能力。我要代表广大菜鸟说一句:你做到了自然就会得到大家的尊重!!!否则你就是有天大的本事我们也鄙视你!!!

支持,说得好

TA的精华主题

TA的得分主题

发表于 2007-11-23 23:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

最近有空做了一个演示例子:

具体请参见:VBA多线程及线程优先级演示程序.

http://club.excelhome.net/viewthread.php?tid=281173&extra=&page=1#281173

TA的精华主题

TA的得分主题

发表于 2007-11-25 16:49 | 显示全部楼层

你们都错了, 只有我能感觉到楼主其实真的是个高人, 楼主,我挺你, 出来说句话吧

TA的精华主题

TA的得分主题

发表于 2007-12-10 09:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 11:02 , Processed in 0.043925 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表