我有一个播放文件的应用程序,每个文件都有自己的运行时间,我只需将我的文件添加到我的文件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 特定文件完成时,我如何从任务中实时知道特定文件完成和另一个文件开始?