VB中OLE调用的优化方法

2016-02-19 19:24 96 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐VB中OLE调用的优化方法,赶紧看过来吧!

【 tulaoshi.com - 编程语言 】

VB5.0中大量使用OLE,对象的正确使用对于开发一个高效的应用程序是非常关键的。因此,笔者想谈一谈OLE调用的优化。
  一、利用WITH语句减少重复调用。
  为了设置单个对象的多个特性,可以使用WITHENDWITH减少激活引用链设置特性的次数,在这种情况下,甚至不需要定义对象类型的临时对象。例如:DBEngine.WorkSpace(0).Databases(0).
  RecordSet.Fields(0).Name="jx"
  DBEngine.WorkSpace(0).Databases(0).RecordSet.Fields(0).Height="1.75"
  可以这样赋值:WITHDBEngine.WorkSpace(0).Databases(0)
  .RecordSet.Fields(0).Name="jx"
  .Height="1.75"
  ENDWITH
  很明显,减少了执行赋值所必须做的OLE对象查询的次数。
  二、使用可以提供的最特定的对象。
  在VB中访问任何对象的模型通常要求重复使用OBJECT.PROPERTY语句,那么这个引用链将变得很长。
  DBEngine.WorkSpace(0).Databases(0).RecordSet.Fields(0).Name
  在上面这个序列中每个点代表VB为了访问下一个元素要求的OLE查找。如果将这样一条语句放到循环中,会产生大量不必要的查找:
  例如ForI%=0TODBEngine.WorkSpace(0).Databases(0).R
  ecordSet.Field.Count-1
  PrintDBEngine.WorkSpace(0).Databases(0).RecordSet.Fi
  elds(I%).Name
  Next
  如果通过使用可用的最特定的对象类型,可以大大减少同一个
  循环的开销。程序变换如下:
  DIMXASFields
  DIMYASField
  SETX=DBEngine.WorkSpace(0).Databases(0).RecordSet.Fi
  elds(0)
  FOREACHYINX
  PrintF.Name
  Next
  三、最小化跨进程OLE调用。
  OLEAutomation对程序内的对象的调用总是比跨进程调用要快,如果处理可以在一个程序内完成,就会比调用另一个应用程序快。如果进行跨进程OLEAutomation,一个硬输入的(DIMXASSPECIFICTYPE)而不是“ASOBJECT”的对象会大大减少开销,因为只需一个跨进程调用。
  四、使用进程内而不是进程外的OLE服务器。进程外OLE服务器(使用MAKEEXE建立的OLE服务器)比进程内OLE服务器(使用MAKEDLL建立的OLE服务器)慢得多。->

来源:http://www.tulaoshi.com/n/20160219/1620914.html

延伸阅读
随着网络应用的不断扩展,采用HTML语言编写的文档越来越多,如何在VB程序中实现对HTML文档的浏览是一个需要解决的问题。本文以一个实例说明了在VB中调用和控制Internet Explorer的方法。 一、 编程准备 VB通过OLE自动化技术创建和控制Internet Explorer对象的实例,因此,在新建一个工程后需要加入Microsoft Internet 控制的参考...
在Sql Server中使用存储过程是大家都比较熟悉的了,前不久自己作了一个小东东,数据库使用的是MS Access数据库,也想着试试用存储过程是否可行。毕竟,存储过程与代码的关系不是非常大,数据库和存储过程的修改有些是不用更改编码的。下面贴出我的代码,大家会发现,其实跟调用Sql Server的存储过程是完全一样的,不同的仅仅在于存储过程的名称...
在网站优化中,如果图片优化得好,不但可以提高页面的加载速度,提升网站的用户体验,而且还可以通过图片优化来节省网站的带宽。那么作为页面构建工程师应该采用什么方法来优化图片,既能保证UI的还原度,又使图片最精简呢?下面我就个人经验,来简单介绍一下图片优化的方法,首先我们了解一些图片方面的知识: 1. 矢量图与位图。 矢量图:...
1. 对图片本身进行操作 尽量不要使用 setImageBitmap、setImageResource、 BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 decode 后,最终都是通过 Java 层的 createBitmap 来完成的,需要消耗更多内存。因此,改用先通过 BitmapFactory.decodeStream 方法,创建出一个 bitmap,再将其设为 ImageView 的 source,decode...
在VB中如何使用直观、简便的报表一直是很多人关心的问题,CrystalReports用起来又不太理想。现介绍一在VB中运行MicrosoftAccess报表的方法,用起来还不错。 利用Automation运行MicrosoftAccess报表 1.使用MicrosoftAccess建立数据库(如:novelty.mdb)的相关报表(如:rptEmployess)。 2.创建引用 在VB中使用...

经验教程

860

收藏

84
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部