C#Systems.Net库与命令行网络工具

时间:2018-12-02 08:00:36

标签: c# networking cmd system.net

对于C#应用程序的一部分,我正在执行一些相对简单的联网命令。 (ping,ipconfig,tracert,nslookup等)

我已经阅读了有关何时使用C#与CMD / PowerShell的一般意义的答案: https://stackoverflow.com/a/4188135/8887398

但是,我特别想了解网络和Systems.Net库,相对于创建新的命令行Process()而言,花一些时间来编写代码以在C#中实现这些代码有何重大优势?在C#应用程序中并以这种方式执行? (Process()路由在C#应用程序中非常简单/容易编码)

问题:使用C#Systems.Net库实现联网命令与在C#应用中创建新的Process()并在内部进行处理(就像您正在使用命令行?

1 个答案:

答案 0 :(得分:0)

启动过程当然没有错。您甚至可以启动PowerShell,并将其用于在PowerShell中易于执行的一系列操作。

启动过程并不像您想象的那么容易。

  1. 例如,您需要同时阅读标准输出和错误。否则,该过程将随机挂起。做到这一点非常困难。
  2. 与使用.NET类相比,从命令中获取结果更加困难。在.NET中,您可以获取对象和异常。一个进程只能向您发送文本和错误代码。
  3. 还有更多的开销。这是否重要取决于这种操作的频率。
  4. 您可以将子进程保留为孤立状态。最好的解决方案是在父级退出时使用Windows Job Object杀死子级树。

因此,这取决于具体情况。我绝对会从C#执行ping操作,因为这很容易做到。其他命令可能会从启动进程中受益更多。