启动带参数的线程

前个星期,公司的项目在客户那里出现了点问题,情况为电话打入后,系统不能弹单(打入电话的时候会显示打入电话者的三字段信息:名字、电话、地址),经过检查后,发现为系统在向GIS系统发送数据的时候造成一个超时等待(GIS没有启动,但是我不明白的是我用的UdpClient,按理说不应该出现这种情况啊),考虑后,决定使用线程来解决这个问题,但是这个线程需要以带参数的形式启动,经过思考后,得出以下代码:

// 首先要写一个类,类里头包含了数据的发送,以构造函数的方式将REMOTE HOST、PORT、和要发送的数据构造进去。
#region send gis data
 class SendGISData
 {
  private string strIP = "";
  private string strData = "";
  private int nRemotePort = -1;

  // IP:目标机IP地址,Data:要发送的字符串数据,RemotePort:端口
  public SendGISData(string IP,string Data,int RemotePort)
  {
   strIP = IP;
   strData = Data;
   nRemotePort = RemotePort;
  }

  public void UDPSendData()
  {
   int sendCount = 0;
   System.Net.Sockets.UdpClient client = new System.Net.Sockets.UdpClient(strIP,nRemotePort);
   byte[] data = new byte[strIP.Length];
   try
   {
    client.Connect(strIP,nRemotePort);
    data = Encoding.ASCII.GetBytes(strData);
    sendCount = client.Send(data,data.Length);
   }
   catch
   {
    sendCount = -32767;
   }
   finally
   {
    client.Close();
   }
  }
 }
 #endregion



// 使用方法
using System.Threading;
....
....
....
SendGISData GISCtrl= new SendGISData("10.54.163.164","02887832222",8080);
ThreadStart threadStart = new ThreadStart(GISCtrl.UDPSendData);
Thread thread= new Thread(threadStart);
thread.Start();

posted on 2007-07-12 14:04  samuel's blog  阅读(813)  评论(2编辑  收藏  举报

导航