Tom*_*fka 10 c# multithreading
我想知道C#Invoke函数是如何工作的(我现在正在考虑从工作线程调用一个从GUI线程调用GUI的方法):
假设我有两个线程,每个线程都有它的指针指针,指向当前执行的指令.
现在,我在工作线程中调用Invoke来在GUI线程中运行委托.当GUI线程已经拥有它的指令指针(IP),并且每个线程只能有一个时,这怎么可能?当我突然调用我的代码时,该IP会发生什么?那么如何使GUI线程继续处理它正在做的事情(它的以前的IP以某种方式恢复)?
这个问题的概括是,当我想从线程1调用函数f()时,如何在一些其他线程的上下文中执行f()...
谢谢你的启发:)!
Mic*_*ael 10
它向目标线程发送一条Window消息.该线程必须位于消息循环中才能使Invoke工作.当线程获得消息时,它会调用委托.
不需要跨线程IP更改 - 实际上,更改IP几乎肯定会使目标线程崩溃.