在VB中异步执行程序
2008-02-23 06:59:50来源:互联网 阅读 ()
----这 种 办 法 是 利 用 Visual Basic 提 供 的 创 建 ActiveX 部 件 的 功 能 设 计 一 个 专 门 完 成“ 大 任 务” 的ActiveX 部 件。 这 里 对ActiveX 部 件 作 如 下 简 单 介 绍, 以 期 适 合 不 同 的 读 者。Visual Basic 所 能 设 计 的 部 件 共 有 两 种: 一 种 是 可 视 的 部 件; 另 一 种 是 不 可 视 的 部 件。ActiveX 控 件 和 窗 体 一 起 构 成 了 应 用 程 序 与 用 户 交 互 的 界 面,ActiveX 文 档 使 用 在Internet 应 用 程 序 中。 由 于 我 们 的 问 题 不 涉 及 到 可 视 的 部 件, 所 以 这 里 不 再 赘 述。
----不 可 视 的 部 件 又 称 为 代 码 部 件, 包 括 Active DLL 部 件 和ActiveX EXE 部 件 两 种。ActiveX 部 件 的 另 一 个 名 称 是 ActiveX 服 务 器, 之 所 以 被 称 作 服 务 器 是 由 于ActiveX 部 件 与 使 用 它 们 的 应 用 程 序 之 间 的 关 系 可 以 被 类 比 为 服 务 器 程 序 与 客 户 端 程 序 之 间 的 关 系:ActiveX 部 件 封 装 了 特 定 的 功 能 或 业 务 规 则, 应 用 程 序 不 需 要 知 道ActiveX 部 件 是 如 何 实 现 这 些 功 能 或 业 务 规 则 的, 只 需 要 通 过ActiveX 部 件 提 供 的 编 程 接 口(API) 传 递 应 用 程 序 的 要 求( 通 过 属 性 或 方 法 的 参 数), 然 后 从 部 件 的 事 件 获 得 执 行 结 果。 根 据ActiveX 部 件(ActiveX 服 务 器) 的 执 行 方 式 可 以 把ActiveX 部 件 分 为 进 程 内 部 件 和 进 程 外 部 件, 所 谓 进 程 内 部 件 即 部 件 和 使 用 它 们 的 应 用 程 序 执 行 时 共 享 同 一 个 进 程; 而 进 程 外 部 件 却 执 行 在 自 己 的 进 程 中, 也 可 以 这 样 认 为: 进 程 外 部 件 的 执 行 不 影 响 使 用 它 们 的 应 用 程 序 ! 显 然, 这 个 特 性 正 是 本 文 开 始 面 对 的 那 个 问 题 所 需 要 的。 在 部 件 中 只 有ActiveX EXE 部 件 是 进 程 外 部 件, 因 此 利 用 这 个 特 性 我 们 可 以 创 建 一 个ActiveX EXE 部 件 来 完 成“ 大 任 务”, 而 应 用 程 序 窗 体 只 显 示 一 些 任 务 的 提 示 信 息, 直 到ActiveX EXE 部 件 的 类 的 事 件 提 示 任 务 结 束 为 止。 这 样 应 用 程 序 就 避 免 了 那 种 呆 板 的“ 白 布” 窗 体 的 出 现, 而 能 够 响 应 任 何 来 自 用 户 的 操 作 或 者 当 从 那 些 遮 盖 住 它 的 程 序 切 换 回 来 时 自 行 刷 新。 给 用 户 的 感 觉 是 程 序 是 在“ 异 步” 执 行。
----下 面 我 们 通 过 例 子 来 看 如 何 实 现 这 一 想 法: 这 个 例 子 中, 我 们 假 设 应 用 程 序 窗 体 是 一 个 一 直 显 示 当 前 时 间 的 数 字 时 钟, 当 你 使 其 执 行“ 大 任 务” 直 到 任 务 的 完 成, 这 期 间 你 会 发 现 数 字 时 钟 窗 体 从 来 就 没 有 被“ 挂 起” 过, 仍 然 能 够 响 应 你 的 拖 动 操 作 和 不 停 地 显 示 时 间。 以 下 是 实 现 这 一 程 序 和ActiveX EXE 部 件 的 步 骤 及 源 代 码:
1. 创 建ActiveX EXE 部 件(BigJobServer)
----步 骤 一: 打 开Visual Basic 6.0 新 建 一 个VB 工 程, 工 程 类 型 选 择ActiveX EXE, 在 工 程 资 源 管 理 器 中 选 中 工 程1, 然 后 在 属 性 窗 口 中 将 其 名 称 改 为 BigJobServer。----步 骤 二: 为 工 程 添 加 一 个Timer 控 件 的 容 器 窗 体( 添 加 窗 体 通 过 菜 单 工 程> 添 加 窗 体 完 成)。 窗 体 名 称 改 为 frmClock ; 在 窗 体 上 放 置 一 个Timer 控 件( 从 工 具 箱 中 选 择Timer 控 件), 名 称 改 为 timClock。
----说 明: 添 加 该 窗 体 的 用 意 是 提 供 一 个 执 行 任 务 的 定 时 器(Timer 控 件)
----步 骤 三: 设 计 实 现“ 大 任 务” 的 类 BigJob ( 注: 代 码 部 件 是 通 过 各 种 类 实 现 应 用 程 序 交 给 它 的 任 务 的, 关 于 类 的 创 建 请 参 考《 手 册》 或MSDN 文 档), 默 认 情 况 下 当 你 新 建ActiveX EXE 部 件 时Visual Basic 为 你 添 加 了 一 个 名 为Class1 的 类( 要 增 加 类 通 过 菜 单 工 程> 添 加 类 模 块 完 成), 从 工 程 资 源 管 理 器 中 选 中Class1, 然 后 在 属 性 窗 口 中 设 置 如 下 属 性:
----( 名 称):BigJob
----Instancing: 5 -MultiUse
----编 写API: 为 类BigJob 添 加 方 法 和 事 件( 通 过 菜 单 工 具 > 添 加 过 程 完 成) 部 分 代 码 及 程 序 说 明 如 下:
Private frmTimeClock As frmClock
' 声 明 定 时 器 容 器 窗 体
Private WithEvents oTimer As Timer
' 声 明 定 时 器( 包 括 其 事 件)
Public Event JobStart()
' 声 明 任 务 开 始 事 件
Public Event JobEnd()
' 声 明 任 务 结 束 事 件
Private Sub Class_Initialize()
' - - - - 类 初 始 化 事 件 - - - -
' 在 这 里 创 建 定 时 器 窗 体 frmTimeClock
' 并 引 用 定 时 器 oTimer
Set frmTimeClock = New frmClock
Load frmTimeClock
Set oTimer = frmTimeClock.timClock
oTimer.Enabled = False
End Sub
Private Sub Class_Terminate()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:让窗体居中
下一篇:Windows 初始化文件的修改
- 在VB中异步执行程序 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash