04.11.2014 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

' 注 : 此 例 的 写 法 不 符 合 .NET Framework 类 库 设 计 指 南 中 的 约 定 ,<br />

' 只 是 为 了 让 你 快 速 理 解 事 件 模 型 而 简 化 的 。<br />

' 请 继 续 阅 读 , 使 用 Demo 1F 的 VB.NET 标 准 写 法 。<br />

'<br />

' 工 作 开 始 事 件 , 并 同 时 通 知 外 界 需 要 完 成 的 数 量 。<br />

Public Event StartWork(ByVal totalUnits As Integer)<br />

' 进 度 汇 报 事 件 , 通 知 外 界 任 务 完 成 的 进 度 情 况 。<br />

Public Event RateReport(ByVal rate As Double)<br />

' 工 作 结 束 事 件 。<br />

Public Event EndWork()<br />

Public Sub DoLongTimeTask()<br />

Dim i As Integer<br />

Dim t As Boolean = False<br />

Dim rate As Double<br />

End Sub<br />

' 开 始 工 作 前 , 向 外 界 发 出 事 件 通 知<br />

RaiseEvent StartWork(MAX)<br />

For i = 0 To MAX<br />

Thread.Sleep(1)<br />

t = Not t<br />

rate = i / MAX<br />

RaiseEvent RateReport(rate)<br />

Next<br />

RaiseEvent EndWork()<br />

首 先 是 事 件 的 声 明 部 分 : 你 只 需 写 上 Public Event 关 键 字 , 然 后 写 事 件 的 名 称 , 后 面 的 参 数 部 分 写 上 需 要 发 送<br />

到 外 界 的 参 数 声 明 。<br />

然 后 请 注 意 已 标 记 为 蓝 色 的 RaiseEvent 关 键 字 ,VB.NET 使 用 此 关 键 字 在 类 内 部 引 发 事 件 , 也 就 是 向 外 界 发<br />

送 事 件 通 知 。 请 注 意 它 的 语 法 ,RaiseEvent 后 接 上 你 要 引 发 的 事 件 名 称 , 然 后 是 具 体 的 事 件 参 数 值 。<br />

从 这 个 例 子 中 , 我 们 可 以 加 深 对 事 件 模 型 的 认 识 : 事 件 是 对 象 ( 类 ) 的 成 员 , 在 对 象 ( 类 ) 内 部 状 态 发 生 了 一 些<br />

变 化 ( 比 如 此 例 中 rate 在 变 化 ), 或 者 对 象 做 一 些 动 作 时 ( 比 如 此 例 中 , 方 法 开 始 时 , 向 外 界 raise event;<br />

方 法 结 束 时 , 向 外 界 raise event), 对 象 ( 类 ) 发 出 的 通 知 。 并 且 , 你 也 了 解 了 事 件 参 数 的 用 法 : 事 件 参 数 是<br />

事 件 通 知 的 相 关 内 容 , 比 如 RateReport 事 件 通 知 需 要 报 告 进 度 值 rate,StartWork 事 件 通 知 需 要 报 告 总 任<br />

务 数 MAX。

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

Saved successfully!

Ooh no, something went wrong!