资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> 其他编程 >> Delphi编程 >> 文档正文
最近更新
普通文档 Together与Visual.Studi
普通文档 Together与Visual.Studi
普通文档 Together与Visual.Studi
普通文档 Delphi实现在数据库中存
普通文档 Delphi开发多媒体播放音
普通文档 开发工具大比拼之Visual
普通文档 Delphi串口通讯的监听
普通文档 Delphi中远程控制的实现
普通文档 利用Delphi编写Socket通
普通文档 利用Delphi开发网络数据
推荐文章
  • 此栏目下没有推荐文档
  • 探索VB系列中的事件处理的奥秘(2)

    文章作者:佚名 录入时间:2006-6-2 来源:不详
    网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。



      多事件处理程序

      我将讨论的下一个类:FileSearch2,它是FileSearch1类的一个相似的拷贝。使用FileSearch2中的唯一的不同是:示例窗体对于FileSearch2类的 FileFound事件包括多个侦听器。这就是,frmMain.vb包括以下的声明:

    ’’以下代码来自FileSearch1.vb
    Private WithEvents fs2 As FileSearch2

      这个示例窗体也包括了在图 2 中所示的事件处理程序。这些事件处理程序也监听由FileSearch3和FileSearch4类引发的FileFound事件,这个我下面还有讲到。

    ’ From frmMain.vb
    Private Sub EventHandler2( _
    ByVal NewFile As System.IO.FileInfo) _
    Handles fs2.FileFound, fs3.FileFound, fs4.FileFound
      AddText("EventHandler2: " & NewFile.FullName)
    End Sub

    Private Sub EventHandler3( _
    ByVal NewFile As System.IO.FileInfo) _
    Handles fs2.FileFound, fs3.FileFound, fs4.FileFound

      AddText("EventHandler3: " & NewFile.FullName)
    End Sub

      点击在主窗体上的Multi-Listener按钮会创建一个FileSearch2类的实例,调用这个实例的执行(execute)方法,就会显示如图 3中所示的输出。

    2
    图 3 多侦听器(Multiple Listeners)允许多过程(Multiple Procedures)运行
      但是注意,当你使用多个Handles子句对同一事件反应时,你完全不能控制事件处理程序运行的顺序。.NET Framework提供两个选择,这将稍后在文章中讨论,它允许你获得对多侦听器的更强地控制。 异常和多个事件处理程序(Multiple Event Handlers)
    正如你已经看到的,一切都让人称心如意。如果你有一个事件的多个处理程序,当事件引发时,.NET Framework将依次调用每个处理程序。到目前为止一切顺利。如果其中某个事件处理程序产生一个异常时将会发生什么?事情就没有那么顺利了。

      为证实这个问题,点击在示例窗体上的RaiseEvent Error按钮。这个例子创建了FileSearch3类的一个新的实例(在这个类本身没有什么新东西)。在图 4 中的示例窗体中提供了若干过程,它处理了FileSearch3.FileFound事件,但是有个过程抛出了一个异常。

    3
    图 5 某个事件侦听器抛出一个错误



    Figure 4 One Event Handler Raises an Error
    ’ From frmMain.vb
    Private Sub EventHandler2( _
    ByVal NewFile As System.IO.FileInfo) _
    Handles fs2.FileFound, fs3.FileFound, fs4.FileFound

      AddText("EventHandler2: " & NewFile.FullName)
    End Sub

    Private Sub EventHandler3( _
    ByVal NewFile As System.IO.FileInfo) _
    Handles fs2.FileFound, fs3.FileFound, fs4.FileFound

      AddText("EventHandler3: " & NewFile.FullName)
    End Sub

    Private Sub EventHandler4( _
    ByVal NewFile As System.IO.FileInfo) _
    Handles fs3.FileFound, fs4.FileFound

      AddText("EventHandler4: Throwing exception!")
      Throw New ArgumentException
    End Sub


      在你运行这个代码时会发生什么?你将获得图 5所示的结果。若有任何一个事件侦听器引发一个异常,整个“事件处理链(event-handling chain)”就停下来。如果你停下来考虑这是怎么回事,你会知道这个行为是有意义的。

  • 上一篇文档:

  • 下一篇文档:
  •     查找更多“探索VB系列中的事件处理的奥秘(2)”的内容  
    相关连接
  • 将Java程序变成Windows系统服务

  • 浅析Java多线程程序设计机制

  • Java初学者需掌握的30个基本概念(1)

  • JDBC 入门(1)

  • 面向Java程序员的Ajax:构建动态Java程序(1)