哪种方法更好:Process.Start或直接调用DLL?
在我们的团队中,我们面临着选择:我们需要调用外部第三方代码并处理来自C#代码的输出。
第三方代码有两种形式:一组dll
和单个exe
文件(可能自己调用这些dll
)。 可能的方法可能是:使用Process.Start
语句来运行可执行文件并捕获其输出。 另一个是直接调用dll
。
我试图理解我们应该使用哪种方法。
一方面调用可执行文件很简单,但另一方面 - 它感觉不健壮。
一方面,调用dll
看起来更加正确,但另一方面,为本机C
代码中的所有函数提供C#
绑定可能非常复杂。
但我需要对此主题进行更实质性的分析才能做出最终决定。 以前有没有人面对同样的问题,也许你可以分享你的发现。
这将是非常有用的!
编辑 :我在说这个特殊情况下的视频转换。 我需要从用户获取视频流并将其转换为所有视频格式。 可以调用ffmpeg
来完成这项工作,并且一切正常,直到出现问题,我需要重新启动编码或采取任何行动。 我无法估计需要多长时间,如果我需要同时转换多个视频, ffmpeg
将不会那么灵活,因为我计划它是......
至少现在我看到了。 当我深入挖掘时,可能会出现更多问题。
有几个考虑因素:
根据答案。
创建绑定如果:
使用可执行文件:
我想说这取决于你的代码在图书馆的api支持方面会有多大的粒度。
如果可执行文件将工作流程封装得足够好,则可以从调用可执行文件的简单性中受益。
此外,由于您提到这是本地C代码,因此添加DLL引用意味着必须处理非托管代码,除非没有我的选择,否则我个人不会这样做。
如果dll编写得很好,并且没有内存泄漏,那么最好使用dll,因为它不需要新的进程创建开销。
链接地址: http://www.djcxy.com/p/68911.html上一篇: Which approach better: Process.Start or call DLL directly?
下一篇: Is there a Way to localize an Application on Various Platforms