调用 - p/调用
BeginInvoke/EndInvoke 和 P/invoke 有什么区别?
what is the difference between BeginInvoke/EndInvoke and P/invoke?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
BeginInvoke/EndInvoke 和 P/invoke 有什么区别?
what is the difference between BeginInvoke/EndInvoke and P/invoke?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
它们的共同点只有动词“调用”。一般来说,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.
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.