毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

vb.net如何用线程池实现多线程事件响应 第2页

更新时间:2012-5-25:  来源:毕业论文

                cnt -= 1
            End SyncLock
        End Sub

        Public Sub Release()
            SyncLock Me
                cnt += 1
                If cnt = 0 And f Then
                    Dim cb As New EventHandler(AddressOf FireEvent)
                    ctl.BeginInvoke(cb)
                    f = False
                    cnt = 0
                End If
            End SyncLock
        End Sub

        Public Sub Wait()
            SyncLock Me
                f = True
                If cnt = 0 And f Then
                    Dim cb As New EventHandler(AddressOf FireEvent)
                    ctl.BeginInvoke(cb)
                    f = False
                    cnt = 0
                End If
            End SyncLock
        End Sub
        Public Sub FireEvent()
            RaiseEvent OnReset(Me, New EventArgs())
        End Sub
    End Class
'以上是类的代码


'主线程代码
Dim cnt As New MyCounter(Me)
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '并绑定MyCounter类的OnReset事件,以接收通知
        AddHandler cnt.OnReset, AddressOf cnt_Reset 
        cnt.Wait()  '此行代码,用来最一次触发大量事件用
    End Sub

    '此过程用于触发大量事件
    Private Sub cnt_Reset(ByVal sender As Object, ByVal e As EventArgs)
       For i As Integer = 0 To objcnt - 1
           '每开启一个线程,调用一次cnt.Enter(),使计数器自减
           cnt.Enter()
           System.Threading.ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf OnEventTimeClockThread))
       Next
       cnt.Wait()  '调用cnt.Wait(),cnt对象在响应完成后将会发出事件通知
    End Sub

       '各个对象响应事件的代码,在响应完成后,需要调用cnt.Release,使计数器自增
       Public Sub OnEventTimeClockThread()
           Threading.Thread.Sleep(2000)
           cnt.Release()
       End Sub

上一页  [1] [2] 

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。