ファイルを再生するアプリケーションがあり、すべてのファイルには独自の実行時間があり、ファイルを自分のファイルに追加Listview
して再生ボタンをクリックするだけです。
これは、リストを入力として受け取った私の関数です。このリストにはすべてのファイルが含まれており、複数のファイルを同時に実行するオプションが必要なため、並列ファイルの数を制御できます。
public void doWork(IEnumerable<string> source, int parallelThreads )
{
_tokenSource = new CancellationTokenSource();
var token = _tokenSource.Token;
Task.Factory.StartNew(() =>
{
try
{
Parallel.ForEach(source,
new ParallelOptions
{
MaxDegreeOfParallelism = parallelThreads //limit number of parallel threads
},
file =>
{
if (token.IsCancellationRequested)
return;
//do work...
});
}
catch (Exception)
{ }
}, _tokenSource.Token).ContinueWith(
t =>
{
//finish...
}
, TaskScheduler.FromCurrentSynchronizationContext() //to ContinueWith (update UI) from UI thread
);
}
ファイルが終了すると、別のファイルの実行が開始され (複数のファイルを同時に再生することを選択した場合)、特定のファイルが終了したことを UI を更新したい場合、特定のファイルが終了したことをタスクからリアルタイムで知るにはどうすればよいですか?別のファイル開始?