VB.NET監(jiān)控類(lèi)具體功能剖析
VB.NET編程語(yǔ)言功能強(qiáng)大,支持類(lèi)的所有特性。每一個(gè)類(lèi)實(shí)現(xiàn)的功能不盡相同,同時(shí)又能給我們帶來(lái)許多新的體驗(yàn)。比如VB.NET監(jiān)控類(lèi),就能幫助我們實(shí)現(xiàn)多線程同步,幫助我們提高編程效率。
在進(jìn)行VB.NET多線程開(kāi)發(fā)時(shí),線程間同步調(diào)用同樣的函數(shù)是非常重要的??紤]你有一個(gè)寫(xiě)文件的函數(shù),如果多個(gè)線程同時(shí)都調(diào)用這個(gè)函數(shù),在一個(gè)線程完成操作之前,再調(diào)用肯定會(huì)拋出異常。為避免此種情況發(fā)生你可以使用VB.NET監(jiān)控類(lèi)Monitor。
在我們的例子中引入下面的命名空間:
- System
- System.Threading
- System.IO
- System.Text
使用VB.NET監(jiān)控類(lèi)的Enter和Exit方法進(jìn)行方法的同步調(diào)用。下面顯示如何操作:
- Monitor.Enter(Me)
- Dim fs As FileStream = New FileStream ("C:\Temp\SyncTest.txt", FileMode.Append)
- Dim t As ThreadThread = Thread.CurrentThread
- fs.Write(Encoding.ASCII.GetBytes(t.Name & vbCrLf), 0, t.Name.Length + 2)
- Dim i As Integer
- For i = 0 To 10000
- fs.Write(Encoding.ASCII.GetBytes(i & ","), 0, i.ToString().Length + 1)
- Next
- fs.Close()
- Monitor.Exit(Me)
在寫(xiě)入文件的代碼的開(kāi)始處,我們調(diào)用 Monitor.Enter 方法。一旦寫(xiě)操作結(jié)束,我們既調(diào)用 Monitor.Exit方法。這確保在一個(gè)線程調(diào)用這個(gè)函數(shù)時(shí),別的線程不能調(diào)用同樣的函數(shù)。你可以通過(guò)注釋掉這兩行代碼來(lái)輕易的檢查不使用VB.NET監(jiān)控類(lèi)時(shí)發(fā)生的事情。
【編輯推薦】