调用 - p/调用

发布于 2024-10-16 13:06:03 字数 46 浏览 4 评论 0原文

BeginInvoke/EndInvoke 和 P/invoke 有什么区别?

what is the difference between BeginInvoke/EndInvoke and P/invoke?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

落花随流水 2024-10-23 13:06:03

它们的共同点只有动词“调用”。一般来说,invoke == call。 pinvoke 中的 p 表示“平台”,pinvoke 编组器是 CLR 内的一段代码,它知道如何正确调用本机(特定于平台)代码。

BeginInvoke 是一个重载的方法名称,用于启动异步方法调用。编译器会自动为每种委托类型生成一个委托类型。与 Invoke 和 EndInvoke 一起使用。它们是自动生成的,因此它们的参数与委托声明匹配。 Winforms 和 WPF(分别是 Control 和 Dispatcher 类)也使用 BeginInvoke 方法。与委托的 BeginInvoke() 方法完全不同,尽管它确实异步启动某些内容。

They only have the verb "invoke" in common. Generically, invoke == call. The p in pinvoke means "platform", the pinvoke marshaller is a chunk of code inside the CLR that knows how to properly call native (platform specific) code.

BeginInvoke is a heavily overloaded method name that starts an asynchronous method call. The compiler automatically generates one for every delegate type. Along with Invoke and EndInvoke. They are auto-generated so their arguments match the delegate declaration. A BeginInvoke method is also used by Winforms and WPF, respectively the Control and Dispatcher classes. Quite a different animal from a delegate's BeginInvoke() method, although it does start something asynchronously.

爺獨霸怡葒院 2024-10-23 13:06:03

BeginInvoke/EndInvoke 用于异步编程调用另一个线程上的委托。 P/invoke 用于调用非托管代码。

BeginInvoke/EndInvoke are used in asynchronous programming to invoke a delegate on another thread. P/invoke is used to call unmanaged code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文