当前位置:编程学习 > C#/ASP.NET >>

请教大家一个多线程问题!批量登陆!

                我就是想用10个或者更多个线程同时去模拟登陆网站和采集数据, 每个线程执行完了, 我还要在界面的控件上(datagrid)更新已经完成,怎么做, 怎么写代码, 我就会单个的。。我找到一些多线程的代码。但是没有 在每个线程执行完之后怎么去 更新软件的界面。(就想知道这个问题,怎么处理 每个执行完后的 界面处理)

                 因为多个的可以增加我的采集速度。但是我不知道弄。在这里先谢谢大家了。 贴上源码吧。或者给个小demo给我。


               //互斥量 
                static   Mutex   mx   =   new   Mutex(); 
                //用于存储资源 
                static   ArrayList   list   =   new   ArrayList(); 

                //定义一个变量,标识线程索引 
                static   int   indexOfThread   =   0; 

                //定义一个变量,用于标识当前线程的数量 
                static   int   countOfThread   =   0; 

                static   void   Main(string[]   args) 
                { 
                        //ArrayList中存储100个数,相当于一百个资源 
                        for   (int   i   =   0;   i   <   100;   i++) 
                        { 
                                list.Add(i); 
                        } 

                        //先启动10个线程 
                        for   (int   i   =   0;   i   <   10;   i++) 
                        { 
                                mx.WaitOne(); 
                                int   ii   =   Convert.ToInt32(list[0]); 
                                list.RemoveAt(0); 
                                Thread   thread   =   new   Thread(new   ParameterizedThreadStart(ThreadProc)); 
                                thread.Name   =   "Thread "   +   indexOfThread++.ToString(); 
                                thread.Start(ii); 
                                //当前的线程数目增1 
                                countOfThread++; 
                                Debug.WriteLine(thread.Name   +   "启动,当前总的线程数为: "   +   countOfThread); 
                                mx.ReleaseMutex(); 
                        } 
                        Console.ReadLine(); 

                } 
                public   static   void   ThreadProc(object   i) 
                { 
                        Debug.WriteLine(Thread.CurrentThread.Name   +   "   :   "   +   i.ToString()); 
                        Thread.Sleep(1000); 
                        CallBack(); 
                } 

                public   static   void   CallBack() 
                { 
                        mx.WaitOne(); 

                        //当前线程数自减1 
                        countOfThread--; 

                        //如果当前还有资源待下载,并且当前的线程的数量小于10 
                        if   (list.Count   >   0   &&   countOfThread   <   10) 
                        { 
                                int   ii   =   Convert.ToInt32(list[0]); 
                                list.RemoveAt(0); 
                                Thread   thread   =   new   Thread(new   ParameterizedThreadStart(ThreadProc)); 
                                thread.Name   =   "Thread "   +   indexOfThread++.ToString(); 
                                thread.Start(ii); 
                                //当前的线程数目增1 
                                countOfThread++; 
                                Debug.WriteLine(thread.Name   +   "启动,当前总的线程数为: "   +   countOfThread); 
                        } 
                        mx.ReleaseMutex(); 
                }

--------------------编程问答-------------------- 请大家帮帮我。。 --------------------编程问答-------------------- 看下思路,替换成模拟登录代码

http://www.cnblogs.com/nnhy/archive/2007/08/18/860656.html --------------------编程问答-------------------- 非常感谢,可以实现我说的吗? --------------------编程问答-------------------- 学习.... --------------------编程问答-------------------- 学习学习 观摩之中…………
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,