请教大家一个多线程问题!批量登陆!
我就是想用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#