【问题标题】:Using PInvoke vs .NET provided functions使用 PInvoke 与 .NET 提供的函数
【发布时间】:2010-04-19 03:49:42
【问题描述】:

从一个版本到另一个版本的 .NET,等于 P/Invoke 的更多功能被添加到 .NET

现在我有两个问题。

1) 就速度而言,哪一个比另一个更受欢迎,通常我使用 .Net 函数,但在紧密循环中我真的不知道哪一个会更快。

2) 有没有网站提供对应的列表?

【问题讨论】:

    标签: c# pinvoke


    【解决方案1】:

    1) 如果有 .NET 功能,您当然应该使用它 - 除非您有充分的理由不使用。

    2) 是的,有一个将 Win32 API 函数映射到 .NET 方法的页面,虽然它已经很老了——它适用于 .NET 1.1。见http://msdn.microsoft.com/en-us/library/aa302340.aspx

    编辑:我知道没有更新的列表,但您可以尝试的一个技巧是在 Reflector 中打开 .NET 框架程序集(如 mscorlib、System 等)并进行搜索对于 Win32 方法名称。如果程序集在内部调用它,您应该能够以这种方式找到它,然后找到它被引用的位置以将其跟踪到您可以调用的公共方法(如果有)。如果没有,至少您可以复制 P/Invoke 签名而无需弄清楚。

    【讨论】:

    • 那里有更新的吗?我遇到了,但正如你所说,它已经过时了。
    • pinvoke.net 列出了许多 Win32 函数的托管等效项
    • 就紧密循环中的性能而言,如果速度绝对至关重要,那么在许多情况下,在 .NET 中使用 PInvoke 实际上会比 .NET 方法或编写 Win32 应用程序慢得多. (有时只为那个紧密的循环编写一个 Win32 应用程序,然后在你的 .Net 应用程序中解析日志是最快的)
    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 2013-01-31
    • 2015-05-25
    • 1970-01-01
    • 2012-05-19
    • 2013-01-02
    • 2015-03-14
    • 1970-01-01
    相关资源
    最近更新 更多