如何在线程中给委托方法里的方法传参数

时间:2022-05-30 19:28:17
  最近在优化我以前的项目时,需要在给原来的委托方法里的方法传递对象,而我要用这个对象来动态生成DataTable,运行时报错:“在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级”。

所以我再次声明一个委托,然后我在方法里再次使用多线程,在这个线程中启动另一个方法来完成我要的工作,然后再次委托给另一个方法来实现。

说的我自己都晕了。。。还是用代码来说话吧。
 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如何在线程中给委托方法里的方法传参数
50如何在线程中给委托方法里的方法传参数如何在线程中给委托方法里的方法传参数dgUser.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如何在线程中给委托方法里的方法传参数        }
   

看起来好像有些乱,有不懂的给我留言吧。