كود :
Public Class Form1
' إنشاء معالج خلفي
Private WithEvents BackgroundWorker1 As New System.ComponentModel.BackgroundWorker
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' تعطيل تضارب المعالجات في حالة محاولة مثلا تغيير خصائص بعض الأدوات من داخل عملية المعالجة
CheckForIllegalCrossThreadCalls = False
' تشغيل المعالج الخلفي
BackgroundWorker1.RunWorkerAsync()
' بعد تشغيل البرنامج ستظهر النافذة بشكل طبيعي
' ولكن في الخلفية هناك معالج يقول بفحص ملف على النت
' ومن ثم مقارنه برقم التحديث الحالي
' واظهار رسالة تبين ذلك
' ** ملاحظة
' قد تستغرق العملية بعض الوقت حتى يتم الاتصال بالنت لجلب ملف بيانات التحديث ومن ثم مقارنة بياناته
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
' إستدعاء دالة والتي تعتبر في حال مناداتها من هنا ضمن المعالجة
If IsUpdateAvailable() Then
' إفعل شيئاً
' مثلاً تشغيل برنامج تحديث خاص والذي بدوره يقوم
' بتنزيل ملف البرنامج في تحديثه الأخير
' ثم غلق هذا البرنامج من أجل تبديل ملفه
' ثم إعادة تشغيل البرنامج من جديد
End If
End Sub
' دالة التأكد من وجود تحديث من خلال ملف صغير على النت
Public Function IsUpdateAvailable() As Boolean
Try
' تعيين ملف نصي مؤقت لحفظ بيانات ملف النت فيه
Dim tmpFile As String = IO.Path.GetTempPath & Guid.NewGuid.ToString & ".tmp"
' تحميل بيانات ملف من النت وحفظ بياناته في الملف المؤقت
My.Computer.Network.DownloadFile("http://vbnet.byethost11.com/examples/update/update.txt", tmpFile)
' على افتراض رقم التحديث الحالي
Dim CurrentUpdate As String = "1000000"
' قراءة بيانات الملف النصي المؤقت
Dim NewUpdate As String = IO.File.ReadAllText(tmpFile)
' هل يحتوي الملف النصي المؤقت على بيانات
If NewUpdate <> "" AndAlso (NewUpdate <> CurrentUpdate) Then
MsgBox("رقم التحديث الحالي" & vbNewLine & _
CurrentUpdate & vbNewLine & _
vbNewLine & _
"يوجد تحديث جديد برقم" & vbNewLine & _
NewUpdate)
Return True
End If
Catch ex As Exception
End Try
End Function
End Class