28-07-17, 11:43 AM
(آخر تعديل لهذه المشاركة : 29-07-17, 03:59 PM {2} بواسطة silverlight.)
الأخ أبوليلي
في الكلاس أدناه ستجد نفس الفكرة بتطبيق مختلف
وهنا تم الاستغناء عن كلاسات مايكروسوفت
الإستخدام
الطريقة الأولي:
الطريقة الثانية:
يجب ملاحظة إن الكلاس ممكن تحويله الي
Provider(OF T
في الكلاس أدناه ستجد نفس الفكرة بتطبيق مختلف
وهنا تم الاستغناء عن كلاسات مايكروسوفت
PHP كود :
Public Class Provider
Private lock As Object
Private source As Byte
Private destination As Byte
Private callback As ProviderCallBack
Private IsProvided As Integer
Public Sub New(callback As ProviderCallBack, source As Byte)
Me.callback = callback
Me.source = source
Me.IsProvided = 0
Me.lock = New Object
Me.destination = Nothing
End Sub
Public Sub Provide()
SyncLock Me.lock
Me.callback(Me.destination, Me.source)
Me.IsProvided = Me.IsProvided + 1
End SyncLock
End Sub
Public Sub OnProvided(ByRef result As Byte)
SyncLock Me.lock
If Me.IsProvided > 0 Then
result = Me.destination
End If
Me.IsProvided = 0
End SyncLock
End Sub
End Class
Public Delegate Sub ProviderCallBack(ByRef destination As Byte, source As Byte)
الإستخدام
الطريقة الأولي:
PHP كود :
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim callBack As ProviderCallBack = AddressOf DoProvide
Dim provider As Provider = New Provider(callBack, 100)
provider.Provide()
Dim result As Integer = Nothing
provider.OnProvided(result)
Me.Text = result
End Sub
Private Sub DoProvide(ByRef x As Byte, y As Byte)
x = y
End Sub
End Class
الطريقة الثانية:
PHP كود :
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim callBack As ProviderCallBack = Sub(ByRef x As Byte, y As Byte)
x = y
End Sub
Dim provider As Provider = New Provider(callBack, 100)
provider.Provide()
Dim result As Integer = Nothing
provider.OnProvided(result)
Me.Text = result
End Sub
End Class
يجب ملاحظة إن الكلاس ممكن تحويله الي
Provider(OF T
Retired

