c# – Invoke如何工作?线程没有只有1个指令指针?

c# – Invoke如何工作?线程没有只有1个指令指针?,第1张

概述我想知道C#Invoke函数是否可以工作(我现在正在考虑来自工作线程的调用来调用从GUI线程 *** 作GUI的方法): 假设我有两个线程,每个线程都有它的inctruction指针,指向当前执行的指令. 现在我在工作线程中调用Invoke来在GUI线程中运行委托.当GUI线程已经具有指令指针(IP),并且每个线程只能有一个时,怎么可能? 当我突然调用我的代码时,该IP会发生什么? 而且如何使GUI线程能 我想知道C#Invoke函数是否可以工作(我现在正在考虑来自工作线程的调用来调用从GUI线程 *** 作GUI的方法):

假设我有两个线程,每个线程都有它的inctruction指针,指向当前执行的指令.

现在我在工作线程中调用Invoke来在GUI线程中运行委托.当GUI线程已经具有指令指针(IP),并且每个线程只能有一个时,怎么可能?
当我突然调用我的代码时,该IP会发生什么?
而且如何使GUI线程能够继续执行任何它正在做的(是以前的IP恢复某种方式)?

这个问题的泛化是,当我想要从线程1调用函数f()时,如何在一些其他线程的上下文中执行f()的方法呢?

谢谢启蒙:)!

解决方法 它向目标线程发送一个Window消息.线程必须在一个消息循环中才能使Invoke工作.当线程获取消息时,它调用委托.

不需要跨线程IP更改 – 实际上,更改IP将几乎肯定会使目标线程崩溃.

总结

以上是内存溢出为你收集整理的c# – Invoke如何工作?线程没有只有1个指令指针?全部内容,希望文章能够帮你解决c# – Invoke如何工作?线程没有只有1个指令指针?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1259492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存