यहाँ VB.Net 4.0 के साथ Asychrounous Work कैसे करें, इसका एक संक्षिप्त उदाहरण दिया गया है।
आइए कल्पना करें कि आपके पास एक ऐसा फॉर्म है जिसमें निम्नलिखित आयात हैं,
Imports System.Windows.Forms
Imports System.Threading
Imports System.Threading.Tasks
उस फ़ॉर्म के दो नियंत्रण हैं
Private WithEvents DoSomthing As Button
Private WithEvents Progress As ProgressBar
आपके आवेदन में कहीं न कहीं हमारे पास Function
है ExecuteSlowStuff
called कहा जाता है , यह फ़ंक्शन आपके executeMyQuery
. के समतुल्य है . महत्वपूर्ण हिस्सा है Action
पैरामीटर जो फ़ंक्शन यह दिखाने के लिए उपयोग करता है कि वह प्रगति कर रहा है।
Private Shared Function ExecuteSlowStuff(ByVal progress As Action) As Integer
Dim result = 0
For i = 0 To 10000
result += i
Thread.Sleep(500)
progress()
Next
Return result
End Function
मान लें कि यह काम DoSomething
. के क्लिक से शुरू हुआ है Button
।
Private Sub Start() Handled DoSomething.Click
Dim slowStuff = Task(Of Integer).Factory.StartNew(
Function() ExceuteSlowStuff(AddressOf Me.ShowProgress))
End Sub
आप शायद सोच रहे होंगे कि ShowProgress
से आता है, वह अधिक गड़बड़ है।
Private Sub ShowProgress()
If Me.Progress.InvokeRequired Then
Dim cross As new Action(AddressOf Me.ShowProgress)
Me.Invoke(cross)
Else
If Me.Progress.Value = Me.Progress.Maximum Then
Me.Progress.Value = Me.Progress.Minimum
Else
Me.Progress.Increment(1)
End If
Me.Progress.Refresh()
End if
End Sub
ध्यान दें कि क्योंकि ShowProgress
किसी अन्य थ्रेड से बुलाया जा सकता है, यह क्रॉस थ्रेड कॉल की जांच करता है। उस स्थिति में यह खुद को मुख्य धागे पर बुलाता है।