c# – 哪种方法更好:Process.Start或直接调用DLL?

c# – 哪种方法更好:Process.Start或直接调用DLL?,第1张

概述在我们的团队中,我们面临着这样的选择:我们需要调用外部第三方代码并从C#代码处理其输出. 第三方代码有两种形式:dll和单个exe文件集(可能是自己调用这些dll).可能的方法可能是:使用Process.Start语句来运行可执行文件并捕获其输出.另一个是直接调用dll. 我试图了解我们应该使用哪种方法. 一方面调用可执行文件很简单,但另一方面 – 它感觉不健壮. 一方面调用dll看起来更正确的方 在我们的团队中,我们面临着这样的选择:我们需要调用外部第三方代码并从C#代码处理其输出.

第三方代码有两种形式:dll和单个exe文件集(可能是自己调用这些dll).可能的方法可能是:使用Process.Start语句来运行可执行文件并捕获其输出.另一个是直接调用dll.

我试图了解我们应该使用哪种方法.

一方面调用可执行文件很简单,但另一方面 – 它感觉不健壮.

一方面调用dll看起来更正确的方式来完成这项工作,但另一方面 – 为本机C代码中的所有函数提供C#绑定可能真的很复杂.

但我需要对这个主题进行更实质性的分析才能做出最终决定.以前是否有人面对同样的问题,也许你可以分享你的发现.

这将非常有用!

编辑:我在谈论这种特殊情况下的视频转换.我需要从用户那里获取视频流并将其转换为一种视频格式.可以调用ffmpeg来完成这项工作,一切正常,直到出现问题,我需要重新启动编码或采取任何行动.我无法估计需要多长时间,如果我需要并行转换几个视频,ffmpeg将不会那么灵活,因为我计划它……

至少我现在看到了.当我深入研究时,可能会出现更多问题.

解决方法 有几个注意事项:

>你有dll的来源吗?
>你打算打电话给那些dll多少钱?
> dll的API和您的用法有多复杂?

取决于答案.

如果创建绑定:

>你会经常打电话给dlls.直接呼叫要快得多.
>你有来源并检查它们有多好.否则,您可能会遇到内存泄漏,调用约定等问题.
> dll的API不是太复杂,所以你不需要向它们发送C对象等.或者在exe中完成很多工作.

使用可执行文件:

>如果您只是偶尔需要运行它们.创建另一个流程的开销对您来说无关紧要.>如果您不确定代码的质量.它将为您的代码提供更安全和可靠的功能,而不是加载一些严重实现的DLL.如果出现问题,您可以多次尝试运行.exe.但它是一个dll崩溃你的应用程序,你不能做任何事情.>如果API非常复杂,并且exe具有很多功能,那么您将不得不重新实现.

总结

以上是内存溢出为你收集整理的c# – 哪种方法更好:Process.Start或直接调用DLL?全部内容,希望文章能够帮你解决c# – 哪种方法更好:Process.Start或直接调用DLL?所遇到的程序开发问题。

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

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

原文地址:https://54852.com/langs/1243462.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存