invoke - p / invoke

时间:2011-02-05 11:49:44

标签: .net pinvoke invoke

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

2 个答案:

答案 0 :(得分:5)

他们只有动词“调用”的共同点。通常,调用==调用。 pinvoke中的p表示“平台”,pinvoke marshaller是CLR内部的一大块代码,它知道如何正确调用本机(特定于平台)的代码。

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

答案 1 :(得分:3)

asynchronous programming中使用

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