所以我再次声明一个委托,然后我在方法里再次使用多线程,在这个线程中启动另一个方法来完成我要的工作,然后再次委托给另一个方法来实现。
说的我自己都晕了。。。还是用代码来说话吧。
1
public
delegate
void
data_1Callback(DataTable dataTable);
//
委托操作DATATABLE
2
3 Remote.RemoteServer.UserCome += new Remote.UserComeHandler(RemoteServer_UserCome);
4 这个是刚启动时线程里方法的又一委托。
5
6 public void RemoteServer_UserCome( object o, string user, string userIP)
7 { stopThread(); //事先停止该线程
8 t = new Thread(new ThreadStart(BindDataGrid));
9 t.Start();
10
11 }
12
13 void stopThread()
14 {
15 if((t != null)&&(t.IsAlive))
16 {
17 t.Abort();
18 t.Join();
19 }
20 t = null;
21 }
22
23 public void BindDataGrid()
24 {
25 if(dtUser.Rows.Count < 1)
26 {
27 ColId.DataType = System.Type.GetType("System.Int32");
28 dtUser.Columns.Add("ID");
29 ColDateTime.DataType = System.Type.GetType("System.String");
30 dtUser.Columns.Add("上线时间");
31 dtUser.Columns.Add("用户名");
32 dtUser.Columns.Add("当前状态");
33 dtUser.Columns.Add("退出时间");
34 dtUser.Columns.Add("外网IP");
35 dtUser.Columns.Add("内网IP");
36 }
37 count ++;
38 DataRow dr = dtUser.NewRow();
39
40 dr[0] = count;
41 dr[1] = DateTime.Now.ToString();
42 dr[2] = userName;
43 dr[3] = "在线";
44 dr[4] = "";
45 dr[5] = NetIp;
46 dr[6] = WokIp;
47
48 dtUser.Rows.Add(dr);
49
50dgUser.Invoke(new data_1Callback(data_1),new object[]{dtUser});
51 }
52
53 private void data_1(DataTable dataTable)
54 {
55 try
56 {
57 this.dgUser.DataSource = dataTable;
58 this.dgUser.Refresh();
59 }
60 catch(Exception ex)
61 {
62 MessageBox.Show(ex.Message.ToString());
63 }
64 }
2
3 Remote.RemoteServer.UserCome += new Remote.UserComeHandler(RemoteServer_UserCome);
4 这个是刚启动时线程里方法的又一委托。
5
6 public void RemoteServer_UserCome( object o, string user, string userIP)
7 { stopThread(); //事先停止该线程
8 t = new Thread(new ThreadStart(BindDataGrid));
9 t.Start();
10
11 }
12
13 void stopThread()
14 {
15 if((t != null)&&(t.IsAlive))
16 {
17 t.Abort();
18 t.Join();
19 }
20 t = null;
21 }
22
23 public void BindDataGrid()
24 {
25 if(dtUser.Rows.Count < 1)
26 {
27 ColId.DataType = System.Type.GetType("System.Int32");
28 dtUser.Columns.Add("ID");
29 ColDateTime.DataType = System.Type.GetType("System.String");
30 dtUser.Columns.Add("上线时间");
31 dtUser.Columns.Add("用户名");
32 dtUser.Columns.Add("当前状态");
33 dtUser.Columns.Add("退出时间");
34 dtUser.Columns.Add("外网IP");
35 dtUser.Columns.Add("内网IP");
36 }
37 count ++;
38 DataRow dr = dtUser.NewRow();
39
40 dr[0] = count;
41 dr[1] = DateTime.Now.ToString();
42 dr[2] = userName;
43 dr[3] = "在线";
44 dr[4] = "";
45 dr[5] = NetIp;
46 dr[6] = WokIp;
47
48 dtUser.Rows.Add(dr);
49
50dgUser.Invoke(new data_1Callback(data_1),new object[]{dtUser});
51 }
52
53 private void data_1(DataTable dataTable)
54 {
55 try
56 {
57 this.dgUser.DataSource = dataTable;
58 this.dgUser.Refresh();
59 }
60 catch(Exception ex)
61 {
62 MessageBox.Show(ex.Message.ToString());
63 }
64 }
看起来好像有些乱,有不懂的给我留言吧。