I want make a class for animating. My problem I got exception: "'ByRef' parameter 'value' cannot be used in a lambda expression."
I have no idea for solve my problem. A want, my class rewrite the TestValue without EventHandler.
Here is my code:
Public Class Form1
Dim TestValue As Single = 0
Dim TestAnim As Animating
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TestAnim = New Animating(100, TestValue, 1, AddressOf Me.Invalidate)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
TestAnim.start()
End Sub
Private Sub Form1_Invalidated(sender As Object, e As InvalidateEventArgs) Handles Me.Invalidated
Debug.WriteLine(TestValue)
End Sub
End Class
Public Class Animating
Dim _to, _value, _stepping As Single
Public Delegate Sub Proc()
Dim procedure As Proc
Public Delegate Sub Resulting(ByRef V2 As Single)
Dim procedures As Resulting
Sub New(ByVal Vto As Single, ByRef value As Single, ByVal stepping As Single, ByRef obj As Proc)
_to = Vto
_value = value
_stepping = stepping
procedure = obj
procedures = New Resulting(Sub()
calc(value)
End Sub)
End Sub
Sub start()
Threading.ThreadPool.QueueUserWorkItem(New Threading.WaitCallback(Sub()
calc(_value)
End Sub))
End Sub
Sub calc(ByRef value As Single)
Threading.Thread.Sleep(50)
value += _stepping
procedures(value)
procedure.Invoke
If value >= _to Then Exit Sub
calc(value)
End Sub
End Class
Thank you for help. I use VB 2015 with .NET 2.0.