Единственный способ, о котором я могу думать, - это использовать методы InvokeRequired () и BeginInvoke (), встроенные в элементы пользовательского интерфейса, чтобы помочь вам убедиться, что весь код, модифицирующий элемент пользовательского интерфейса, выполняется из того же потока, который использовался для создания элемент.
... Перед запуском Foo в Bar создайте экземпляр некоторого элемента пользовательского интерфейса, скажем, метку ... Затем, когда событие вызывается в Foo, в обработчике событий вызовите BeginInvoke () для этого элемента пользовательского интерфейса, Это гарантирует, что код, который запускается, будет запущен на Bar ...
Но ПОЧЕМУ вы хотите это сделать?