1

次のコードを検討してください。

Dim MyDispatcher = Windows.Threading.Dispatcher.CurrentDispatcher
Public NormalUpdateThread As System.Threading.Thread
Private Delegate Sub UpdateUIDelegate()

メソッドを次のように呼び出します

MyDispatcher.BeginInvoke(DispatcherPriority.Background, New UpdateUIDelegate(AddressOf doProgressbarStuff))

および関数 doProgressbarStuff

Public Sub doProgressbarStuff()
        customprogressbar1.Increment(1)
        customprogressbar1.Content = "Elapsed Time: " & GetTime(elapsedSeconds) & " | " & " Remaining Time:GetRemainingtime() | " & progressBarEdit1.Value & " of " & My.Settings.maindatatable.Rows.Count & " Products Updated |" & " Completion:" & Math.Round((progressBarEdit1.Value / My.Settings.maindatatable.Rows.Count), 3) * 100 & "%"
      End Sub

上記のコードは問題なく動作しています。問題は、3 つのパラメーターを受け取る新しい doProgressbarStuff 関数を作成したことです。Addressof を使用して呼び出す方法や、上記の doProgressbarStuff 関数と同じようにパラメーターを使用して機能させる方法がわかりません。

4

1 に答える 1

0

BeginInvoke で使用できるオーバーライドがいくつかあります

Dispatcher.BeginInvoke メソッド

Dispatcher.BeginInvoke Method (Delegate, DispatcherPriority, Object[])の使用を検討している可能性があります。

Dispatcher が作成されたスレッドで、指定された引数を使用して、指定されたデリゲートを指定された優先順位で非同期的に実行します。

于 2012-08-22T04:32:39.100 に答える