AsyncとAwaitキーワードを使えば良い。
例えば、メソッドに以下のような処理があった場合:
そればかりか、[処理1]の画面表示も行われない。
そこで重たい処理を非同期化する。
1) Taskオブジェクトを作成し、その中に重い処理を記述
2) AwaitでTaskオブジェクトを実行
3) 処理全体(InitProcの宣言)に Async を追加
こうすることで、
1) [処理2]を呼び出した時点でInitProcはいったん終了し、処理を続行 ([処理2]はバックグラウンドで動作)
→ Await による動作
2) [処理2]が終了すると [処理3]に処理が戻る
→ Async による動作
となる。
例えば、メソッドに以下のような処理があった場合:
Private Sub InitProc() Call 処理1 (画面表示の軽い処理) Call 処理2 (重い処理) Call 処理3 (画面表示の軽い処理) End Sub[処理2]は時間がかかる重い処理のため、処理が終わるまで[処理3]の画面表示は行われない。
そればかりか、[処理1]の画面表示も行われない。
そこで重たい処理を非同期化する。
Private Async Sub InitProc() Call 処理1 (画面表示の軽い処理) Dim task as Task = Task.Run ( Sub() Call 処理2 (重い処理) End Sub ) Await task Call 処理3 (画面表示の軽い処理) End Subポイントとして、
1) Taskオブジェクトを作成し、その中に重い処理を記述
2) AwaitでTaskオブジェクトを実行
3) 処理全体(InitProcの宣言)に Async を追加
こうすることで、
1) [処理2]を呼び出した時点でInitProcはいったん終了し、処理を続行 ([処理2]はバックグラウンドで動作)
→ Await による動作
2) [処理2]が終了すると [処理3]に処理が戻る
→ Async による動作
となる。
次回記事: VisualBasic #9:Date型にNothingを代入するには?
VisualBasic
0 件のコメント:
コメントを投稿