C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■92848 / )  Re[6]: バックグラウンドプロセスを待機させるとInvokeでフリーズ
□投稿者/ 造形 (8回)-(2019/11/02(Sat) 12:44:52)
例えば、以下のコードに関してなのですが

    Private Async Sub NumericUpDown29_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown29.ValueChanged

        CType(sender, NumericUpDown).Enabled = False

        Await Task.Run(Sub()

                           Call FileExport()

                       End Sub)

        CType(sender, NumericUpDown).Enabled = True

    End Sub

FileExportは一カ所ではなく複数箇所で出てくるため、
上記のようにすると、
コードが長くなってしまいます。

そのため、



    Private Sub NumericUpDown29_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown29.ValueChanged

        CType(sender, NumericUpDown).Enabled = False

	Call FileExportAsync()

        CType(sender, NumericUpDown).Enabled = True

    End Sub



    Private Async Sub FileExportAsync()


        Await Task.Run(Sub()

                           Call FileExport()

                       End Sub)


    End Sub

のようにしたいのですが、

Await Task.Run(Sub()
が終了するまえに、

Call FileExportAsync()
から抜けて
CType(sender, NumericUpDown).Enabled = True
が実行されてしまいます。

それぞれのコードで、毎回、


        Await Task.Run(Sub()


                       End Sub)

を書く必要があるのでしょうか?

返信 編集キー/


管理者用

- Child Tree -