//启动线程 private void button1_Click(object sender, EventArgs e) { ArrayList list = new ArrayList(); list.Add("192.168.9.14:8000:31214"); list.Add("192.168.9.201:8000:31201"); foreach (string strvalue in list) { string[] str = strvalue.Split(':'); screenshotsthread = new ScreenshotsThread(); screenshotsthread.setAddr(str[0].ToString()); screenshotsthread.setPort(str[1].ToString()); screenshotsthread.setId(str[2].ToString()); screenshotsthread.start(); } } //获取线程变量质 private void button2_Click_1(object sender, EventArgs e) { screenshotsthread = new ScreenshotsThread(); textBox3.Text = screenshotsthread.Info; FuncWrite("实例类获取到值:" + screenshotsthread.Info); } //票队列处理线程 class ScreenshotsThread { private String IpAddress = ""; private string IPport = ""; private String tid = ""; Thread thread = null; static object _getTerminalObj = new object();//锁定对象 byte[] buffer = new byte[1024]; Socket socket; bool _state = true; string _info; //IP地址 public void setAddr(String IpAddr) { IpAddress = IpAddr; } public bool state { get { return _state; } set { _state = value; } } public string Info { get { return _info; } set { _info = value; } } //端口号 public void setPort(string Port) { IPport = Port; } //机器编码 public void setId(String id) { tid = id; } public void start() { if (thread == null) thread = new Thread(run); thread.IsBackground = true; thread.Start(); } public void run() { try { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(IpAddress, int.Parse(IPport)); socket.Receive(buffer); } catch (Exception ex) { throw new Exception("读取截屏据数据存在错误!"); } socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket); } void ReceiveMessage(IAsyncResult ar) { try { var socket = ar.AsyncState as Socket; var length = socket.EndReceive(ar); byte[] reallData = new byte[length]; Array.Copy(buffer, reallData, length); string str = System.Text.Encoding.UTF8.GetString(reallData); // FuncWrite(System.Text.Encoding.UTF8.GetString(reallData)); if (str.IndexOf("确认要退出系统吗") > -1) { Info = tid + ":" + str; } else if (str.Contains("请输入") && str.Contains("选择竞猜内容")) { Info = tid + ":" + str; } else if (str.Contains("请输入") && str.Contains("内数字选择日期")) { Info = tid + ":" + str; } else if (str.Contains("请输入") && str.Contains("数字选择日期")) { Info = tid + ":" + str; } else if (str.Contains("没有第") && str.Contains("场比赛")) { Info = tid + ":" + str; } else if (str.Contains("周") && str.Contains("没有赛事")) { Info = tid + ":" + str; } else if (str.Contains("倍数最小为") && str.Contains("请重新输入")) { Info = tid + ":" + str; } else if (str.Contains("当前操作尚未完成") && str.Contains("是否确定要退出")) { Info = tid + ":" + str; } else if (str.IndexOf("倍投范围为") > -1) { Info = tid + ":" + str; } Thread.Sleep(800); } catch (Exception ex) { // FuncWrite(ex.Message); } finally { socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket); } }----