前端之家收集整理的这篇文章主要介绍了
c# – Invoke如何工作?线程没有只有1个指令指针?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道C#Invoke
函数是否可以工作(我现在正在考虑来自工作线程的
调用来
调用从GUI线程操作GUI的
方法):
假设我有两个线程,每个线程都有它的inctruction指针,指向当前执行的指令.
现在我在工作线程中调用Invoke来在GUI线程中运行委托.当GUI线程已经具有指令指针(IP),并且每个线程只能有一个时,怎么可能?
当我突然调用我的代码时,该IP会发生什么?
而且如何使GUI线程能够继续执行任何它正在做的(是以前的IP恢复某种方式)?
这个问题的泛化是,当我想要从线程1调用函数f()时,如何在一些其他线程的上下文中执行f()的方法呢?
谢谢启蒙:)!
它向目标线程发送一个Window消息.线程必须在一个消息循环中才能使Invoke工作.当线程
获取消息时,它
调用委托.
不需要跨线程IP更改 – 实际上,更改IP将几乎肯定会使目标线程崩溃.
原文链接:https://www.f2er.com/csharp/94801.html