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

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

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

Taskの順次実行

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■84857 / inTopicNo.1)  Taskの順次実行
  
□投稿者/ だんご (8回)-(2017/08/09(Wed) 16:57:20)

分類:[.NET 全般] 

VBでTaskクラスを使用し、外部アプリの入出力を非同期で確認する処理を書いております。
入出力のテストは何個かありますので、これらの非同期処理を順番に実行するように書きました。
具体的には、TaskのContinueWithの中で次のTaskを呼ぶような感じです。

順次実行待機には、最初のTask実行後、プログレスバーのあるフォームのShowDialogで操作を奪って、イベントが発生するたびにプログレスバー更新、次のTaskを実行、すべて終了したらダイアログを閉じて終了するようにしました。
しかし最初の一回は良いのですが、ContinueWithで次のTaskが実行されると全体的にウィンドウが固まります。
そのTaskが終了イベントを出すと、バーは更新されますがTaskの中を実行中は固まるようです。

ContinueWithの中でどんどん階層的にTaskを呼び出すのがいけないのかなと思い別の方法を検討しましたが、このTaskを順番に実行し、かつ待機可能な方法が思いつきません。
何か方法がありますでしょうか。
よろしくお願いいたします。

Visual Studio Community .Net4.5
引用返信 編集キー/
■84867 / inTopicNo.2)  Re[1]: Taskの順次実行
□投稿者/ Azulean (849回)-(2017/08/09(Wed) 21:56:52)
No84857 (だんご さん) に返信
> しかし最初の一回は良いのですが、ContinueWithで次のTaskが実行されると全体的にウィンドウが固まります。
> そのTaskが終了イベントを出すと、バーは更新されますがTaskの中を実行中は固まるようです。

具体的なコードを書いてもらえませんか。
おそらく、ContinueWith でタスクをつなぐ際、メインスレッドで実行するように構成してしまっているのでは?と予想しますが…。
引用返信 編集キー/
■84905 / inTopicNo.3)  Re[2]: Taskの順次実行
□投稿者/ だんご (9回)-(2017/08/19(Sat) 20:24:54)
No84867 (Azulean さん) に返信
> ■No84857 (だんご さん) に返信
>>しかし最初の一回は良いのですが、ContinueWithで次のTaskが実行されると全体的にウィンドウが固まります。
>>そのTaskが終了イベントを出すと、バーは更新されますがTaskの中を実行中は固まるようです。
>
> 具体的なコードを書いてもらえませんか。
> おそらく、ContinueWith でタスクをつなぐ際、メインスレッドで実行するように構成してしまっているのでは?と予想しますが…。

返信が遅くなり申し訳ありません。
仰る通りメインスレッドで実行されるようになっておりました。
ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ