Я не могу связать прилагаемый пример кода с вашим вопросом, но я отвечу на ваш вопрос.Parallel.Invoke()
принимает в качестве параметров лямбды (встроенные функции) (переменной длины).Он вызывает / выполняет все лямбда-выражения параллельно и блокирует выполнение до тех пор, пока не будет завершено выполнение всех лямбд.Например:
Parallel.Invoke( () => Thread.Sleep(500), () => Thread.Sleep(1500), () => Thread.Sleep(200));
Это вызвало бы все три из этих функций одновременно (() => ...
- объявленная inline функция, которая не принимает параметров и возвращает результат единственного выражения, которое следует после.) И block(это означает, что выполнение не будет продолжаться после этой точки в потоке вызывающего), пока все три из этих функций не будут завершены.В этом случае Parallel.Invoke займет 1500 миллисекунд, так как самая продолжительная функция - вторая, которая ждет 1500 миллисекунд перед возвратом.
Я не совсем уверен, что вы пытаетесь проиллюстрировать с помощьюпример кода, но если вы хотите запустить Start () и Stop () параллельно (опять же, не совсем понимаете, зачем это нужно), вы можете сделать что-то вроде Parallel.Invoke(tr[0].Start(), tr[0].Stop())