dzień dobry
proszę o pomoc w zrozumieniu co taki kod robi?
await Task.Run(() => {
Parallel.ForEach(files, (currentFile) =>
{
string filename = Path.GetFileName(currentFile);
var bitmap = new Bitmap(currentFile);
bitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);
bitmap.Save(Path.Combine(newDir, filename));
Console.WriteLine($"Processing {filename} on thread {Thread.CurrentThread.ManagedThreadId}");
});
});
Z tego jak ja to rozumiem to
- Parallel.ForEach - równolegle przetwarza dane na prockach (corach), po prostu dzieli je na n części i robi robotę. Z tego co wiem to robi to synchronicznie czyli np blokuje watek UI
- Task.Run -> wsadza zadanie do kolejki do puli wątków i wykonuje zadanie asynchronicznie
teraz łącząc jedno z drugim - jak rozumiem jest to ni mniej ni więcej przetwarzanie równoległe w osobnym wątku?
Cy dobrze to rozumiem?
dziękuję za odpowiedź