0
アニメーション用のクラスを作成します。 私の問題は例外です: "'ByRef'パラメータ 'value'はラムダ式では使用できません。".net ByRefパラメーターデリゲートサブプロシージャー(EventHandlerなし)
私は自分の問題を解決することはできません。私のクラスは、EventHandlerを使わずにTestValueを書き直しています。
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
が助けてくれてありがとう:
は、ここに私のコードです。 .NET 2.0でVB 2015を使用します。
素晴らしいことだ質問を、明確にした場合だけ答えとしてリンクを投稿しないでください - MORを配置しようこの記事を提出した理由を説明し、これによって解決されると思われるエラーを説明します。 – LordWilmore
修正済み、建設的なコメントありがとうございました – mmgfrcs
例外は削除されていますが、プロシージャが正しく動作しません。 ByRefで使用する変数で、スレッドを実行している間は書き換えません。 – Zserigta