В моем приложении я беру файл после моего Listbox
и запускаю его, используя мой класс, также у меня есть опция цикла, если я хочу продолжить воспроизведение всех моих файлов из своего списка после того, как приложение закончит все файлы, то есть начните снова все файлы, чтобы я поставил свою задачу, которая существует в моей кнопке Play, нажмите внутри. Пока она запускает мои файлы только в первый раз и после этого не продолжается, даже если мой numericUpDownLoops.Value == 2
и loopCount = 1
Когда моя задача внутри цикла работает только один раз
NumericUpDown numericUpDownLoops;
private void btnPlay_Click(object sender, EventArgs e)
{
int loopCount = 0;
if (loopCount < numericUpDownLoops.Value)
{
Task.Factory.StartNew(() =>
{
var files = listBoxFiles.Items.Cast<string>().ToList();
Parallel.ForEach(files,
new ParallelOptions
{
MaxDegreeOfParallelism = 1 // limit number of parallel threads
},
file =>
{
//play my file
});
}).ContinueWith(
t =>
{
loopCount++;
}
, TaskScheduler.FromCurrentSynchronizationContext() // to ContinueWith (update UI) from UI thread
);
}
}
Почему вы называете 'Parallel.ForEach', тогда установите' MaxDegreeOfParallelism' значение 1, вы удаляете «параллельность» функции. Нормальный 'foreach' будет намного меньше накладных расходов. –