Dzwebs.Net

撰写电脑技术杂文十余年

c#代码实例之带参数的多线程

Admin | 2010-6-30 22:13:33 | 被阅次数 | 10517

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在c#中使用多线程,是为了提高CPU的利用率,即,在相同的时间里面做更多的事情(但前提条件是系统资源没有完全耗尽)。

  一、在什么样的情况下使用多线程

  因此,并非是处处使用多线程是上策,而是在硬件配置比较高的情况下,使用多线程是更好的选择,因为这样做更有效益。

  举个例子来说吧,比如,某机房有99台计算机,您想使用其中的一台计算机,利用PING命令来检查剩余的98台计算机,其网络状态是否畅通?

  你会怎么做?当然,很多人都知道,使用循环,在循环中调用PING命令来实现。这本身没有错,但是,这样的做法无异于先PING第一台,完毕之后再PING第二台,完毕之后再PING第三台……一直到完。这相当于什么呢,相当于逐一Ping这98台计算机。要知道PING是消耗时间的,尤其是当某台或多台计算机网络连接状态断开的时候,更消耗时间;万一所有的计算机都没有开机,那么,您Ping完98次,得需要多少时间?

  为了解决这个问题,我们需要使用多线程来处理。让这98次的Ping,在同一时间进行。如此计算,在效益和时间上,比上述的方法提供了98倍。

  二、带参数多线程之c#代码实例

  本例,本站要给大家介绍的是,带参数的多线程实例。实例的代码功能是,通过带参数的多线程,在同一时间Ping98台计算机,检查其网络连接是否正常。

  ①前提条件

  前提条件是,在uing中,引入如下的两个命名空间。

  using System.Threading;//多线程要使用它
  using System.Net.NetworkInformation; //Ping命令要使用它

  ②实例

  A:带参数的多线程函数代码

  public void TestConnection(object MyValue)//通过PING对方计算机名称或IP,检查计算机是否连接正常
        {
            string message;
            message = "";
            Ping p = new Ping();
            try
            {
                PingReply r = p.Send(MyValue.ToString().Trim());
                if (r.Status == IPStatus.Success)
                {
                    message = "Success";
                }
            }
            catch
            {
            }
            finally
            {
    if (message == "Success")
    {
     //MessageBox.Show("网络连接畅通");
    }
    else
    {
     //MessageBox.Show("网络连接异常");
    }
            }
        }

  代码解释:上述的object MyValue就是要接收的参数。

  B:调用函数带参数的多线程代码

  Thread[] myThread = new Thread[98];//定义多线程数组(98个)
  int Myboot = 0;
  for(int i=1;i<=98;i++)
  {
                    ParameterizedThreadStart ParStart = new ParameterizedThreadStart(TestConnection);//引用函数名称
                    myThread[Myboot] = new Thread(ParStart);//定义多线程
                    object O = “192.168.0.“+i.ToString().Trim();//给参数赋值
                    myThread[Myboot].Start(O);//启动带参数的多线程
                    Myboot = Myboot + 1;
                }
  }

  到此,实例完毕。以上代码,均本站严格测试,未发现任何错误。希望本文对您有帮助。


该杂文来自: 网络知识杂文

上一篇:使用c#代码判断局域网计算机是否开机、网络连接是

下一篇:隐藏“网上邻居”图标的方法

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计