Я хотел бы знать, как возможно, что функция C # Invoke может работать (сейчас я рассматриваю вызов из рабочего потока для вызова метода, который манипулирует GUI из потока GUI):
Предположим, у меня есть два потока, и у каждого из них есть указатель на заражение, указывающий на инструкцию, которая выполняется в данный момент.
Теперь я вызываю Invoke в рабочем потоке для запуска делегата в потоке GUI . Как это возможно, если у потока GUI уже есть указатель инструкций (IP), и у каждого потока может быть только один?
Что происходит с этим IP, когда я неожиданно вызываю свой код?
И как получается, что поток GUI может впоследствии продолжить то, что он делал (восстановлен ли его прежний IP)?
Обобщение этого вопроса: как это сделать, когда я хочу вызвать функцию f () из потока 1 таким образом, чтобы функция f () выполнялась в контексте некоторого другого потока ... .
Спасибо за просветление:)!