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

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

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

主线程会持续发出一系列EventClock事件,所有的10000个CWacher对象都会对每一个EventClock事件做出相应。

在单线程情况下,所有10000个CWatcher的对象是按照addhandler..addressof..语句定义的顺序依次执行响应程序的。

问题是这样:我希望当第一个EventClock事件发出后,所有CWatcher通过线程池操作并发响应这个事件,而主线程等待所有对象响应完成之后再发出第二个EventClock事件。请问如何能够实现呢?这个问题已经难倒过很多同行高手了~

主線程中聲明一個計算器,和一個對象(用來同步)
Dim counter As Integer = 0
Dim syncobj As Object

'要觸發事件前,先做一個判斷,通過查看計算器,得出是否所有的CWatcher已經響應事件,如果全部響應,才觸發
If counter Mod 10000 = 0 Then
    '觸發事件
Else
    '不觸發
End If


'在CWatcher響應事件的過程代碼中,加入下面的代碼
SyncLock syncobj
    counter += 1
End SyncLock

事件的觸發,與是否處在多線程環境關無關係,事件觸發的代碼會在觸發事件的那個線程中執行
RaiseEvent一定會等待所以的響應完成之後才運行後面的代碼
除非你在響應事件的過程中寫代碼另外再開啟線程來處理,但這樣做就沒有意義了

Public Class MyCounter
        Private cnt As Integer = 0
        Private f As Boolean
        Private ctl As Control
        Public Event OnReset As EventHandler
        Public Sub New(ByVal owner As Control)
            ctl = owner
        End Sub

        Public Sub Enter()
            SyncLock Me

[1] [2] 下一页

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

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