需求如下:
用C#开发,有个数不固定的几个IP段 比如 “192.168.1”“10.2.5 ”192.168.3“ ”10.2.6 “
现在希望做一个程序使用Ping nbtstat 命令来获得上述IP段内所有存在机器的 IP Address, Mac Address,Host Name
由于IP段不止上面提到的那几个,因此要使用线程来做,如果哪位知道 请贴出Demo。现在本人已经实现了 用进程来做,网上的例子也较多,比较容易,主要是在使用多线程开发的时候,遇到了问题,
不知道如何在线程里面执行Dos命令。请知道的告诉一下。再次强调的是如果是进程
( ProcessStartInfo info1 = new ProcessStartInfo();
                Process process1 = new Process();
     ......
   process1 = Process.Start(info1);  
)
类似的代码就不要贴了。

解决方案 »

  1.   

    还有个问题:像这样的需求 使用多线程对于单核的CUP来说能提高执行效率么?
    比如 我使用多线程 同时查询3个IP段的机器的信息,和用进程的方式 一个IP段的查询完后在查询下一个
    效率会高出很多么?
      

  2.   

    用多线程执行这个没试过...不过原来在BackGroudWorker里面调用过控制台程序...把BackGroudWorker改一下分离成用多线程应该可以的吧...用多线程的话要注意线程状态控制...不然很容易出错的...
      

  3.   

    没有用过的话,谁能告诉我一下 我在1楼写的东西理解的对不对啊,我到目前为止认为,假如有3个以上的IP Segment采用线程的方式来查询的话,有2个弊端 1,难以控制,因为在实际程序执行的时候,有多少个IP Segment不知道。2,最重要的是 我认为用线程执行IP Seg查询的方式 对于单核CPU的系统来说 和不用多线程而用 进程的方式一个一个来查询的方式所花费的时间 差不多,比如进程方式花费15分钟,多线程方式可能也得14分钟左右,根本不会 有很大的提升,比如多线程的时候只用7分钟左右即可得到结果。
      

  4.   

    这种PING一般是占网络资源,同时响应N个网络肯定要比一个一个来快的多!所以速度应该会有很大的提升!
      

  5.   

    偶实现了,速度确实有提升 不过 告诉看贴的各位,最好,不要试图使用Dos命令来解决这个问题,可以用
    C#自带的函数 来实现Ping命令对应的功能 速度上提升很大。