04.11.2014 Views

编程资料- 多线程 - 错误提示:发生了异常- 博客园

编程资料- 多线程 - 错误提示:发生了异常- 博客园

编程资料- 多线程 - 错误提示:发生了异常- 博客园

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

private Form1 parent;<br />

}<br />

public MyWorkerReport(Form1 form)<br />

{<br />

this.parent = form;<br />

}<br />

你 或 许 已 经 觉 得 这 种 实 现 方 式 , 虽 然 Worker 类 “ 里 面 ” 可 能 少 了 一 些 代 码 , 却 在 调 用 时 增 加 了 很 多 代 码 量 。 从<br />

重 复 使 用 的 角 度 来 看 , 事 件 模 型 显 然 要 更 方 便 调 用 。 另 外 , 从 面 向 对 象 的 角 度 , 我 觉 得 理 解 了 事 件 模 型 的 原 理 之<br />

后 , 你 会 觉 得 “ 事 件 ” 会 更 亲 切 一 些 。<br />

另 外 ,IWorkerReport 中 包 含 多 个 方 法 , 而 大 多 时 候 我 们 并 不 是 每 个 方 法 都 需 要 , 就 像 上 面 的 例 子 中 那 样 ,<br />

OnStartWork 和 OnEndWork 这 两 个 都 是 空 白 。 如 果 接 口 中 的 方 法 很 多 , 也 会 给 调 用 方 增 加 更 多 的 代 码 量 。<br />

下 载 的 源 代 码 中 还 包 括 一 个 Demo 1J, 它 和 Worker 类 一 起 , 提 供 了 一 个 IWorkerReport 的 默 认 实 现<br />

WorkerReportAdapter( 每 个 方 法 都 是 空 白 )。 这 样 , 调 用 方 只 需 要 从 WorkerReportAdapter 继 承 , 重 写<br />

其 中 需 要 重 写 的 方 法 , 这 样 会 减 少 一 部 分 代 码 量 。 但 我 觉 得 仍 然 是 很 多 。<br />

注 意 , 上 述 的 代 码 , 套 用 ( 仅 仅 是 套 用 , 因 为 它 不 是 事 件 模 型 )“ 单 播 事 件 ” 和 “ 多 播 事 件 ” 的 概 念 来 说 , 它 只 能 支<br />

持 “ 单 播 事 件 ”。 如 果 你 想 支 持 “ 多 播 事 件 ”, 我 想 你 可 以 考 虑 加 入 AddWorkerReport 和<br />

RemoveWorkerReport 方 法 , 并 使 用 Hashtable 等 数 据 结 构 , 存 储 每 一 个 加 入 的 IWorkerReport。<br />

[TOP]<br />

.NET 事 件 模 型 和 Java 事 件 模 型 的 对 比<br />

( 我 对 Java 语 言 的 了 解 不 是 很 多 , 如 果 有 误 , 欢 迎 指 正 !)<br />

.NET 的 事 件 模 型 , 对 于 C#/VB.NET 两 种 主 流 语 言 来 说 , 是 在 语 言 层 次 上 实 现 的 。C# 提 供 了 event 关 键<br />

字 ,VB.NET 提 供 了 Event,RaiseEvent 关 键 字 。 像 前 面 两 节 所 讲 的 那 样 , 它 们 都 有 各 自 的 声 明 事 件 成 员 的<br />

语 法 。 而 Java 语 言 本 身 是 没 有 “ 事 件 ” 这 一 概 念 的 。<br />

从 面 向 对 象 理 论 来 看 ,.NET 的 一 个 类 ( 或 类 的 实 例 : 对 象 ), 可 以 拥 有 : 字 段 、 属 性 、 方 法 、 事 件 、 构 造 函 数 、<br />

析 构 函 数 、 运 算 符 等 成 员 类 型 。 在 Java 中 , 类 只 有 : 字 段 、 方 法 、 构 造 函 数 、 析 构 函 数 、 运 算 符 。Java 的 类<br />

中 没 有 属 性 和 事 件 的 概 念 。( 虽 然 Java Bean 中 将 getWidth、setWidth 的 两 个 方 法 , 间 接 的 转 换 为 一 个<br />

Width 属 性 , 但 Java 依 然 没 有 把 “ 属 性 ” 作 为 一 个 语 言 层 次 的 概 念 提 出 。) 总 之 , 在 语 言 层 次 上 ,Java 不 支 持<br />

事 件 。<br />

Java Swing 是 Java 世 界 中 常 用 的 制 作 Windows 窗 体 程 序 的 一 套 API。 在 Java Swing 中 有 一 套 事 件 模<br />

型 , 来 让 它 的 控 件 ( 比 如 Button 等 ) 拥 有 事 件 机 制 。

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!