小弟想做了一个新闻抓取的winform程序其中写了一个数据库操作类operate.cs,这个类有一个静态方法就是把抓取到的新闻添加到数据库里。都是通过多线程执行到这个静态方法,我想执行了一次这方面,窗体form1中的label就加1。这需要怎么写呢?winform多线程
解决方案 »
- foreach遍历一个winform页面的controls,怎么判断control是XtraTabControl控件?
- 菜鸟问个相当菜的问题,
- 怎么把数组绑定到datagrid里面
- DataGrid分页问题!急!各位仁哥仁姐帮帮忙啊!
- 简单问题,如何去除相同值?
- focus方法的用法,为什么没有加入focus方法调用的方法就不能起作用
- 版主!你给我出来,我有一件天大的事情找你!丢分的朋友请进来!
- 各位高手,我從沒有做過水晶報表,誰能提供這方面的例子或者資料啊,感激不盡了!!!
- 请问那位大侠有关于从两个表取出数据的treeview的实例代码?
- ***高人请进入***在C#中,如何使用STI.dll这类型的API函数?
- 快来看 一个奇怪的问题++i与i++的区别
- 事件传递问题(高分悬赏)
每次执行需要new 一个窗体的类吗
这个我前几天刚做过。500个线程操作可以的。
private int Count = 0; //抓取图片成功次数 private void Form1_Load(object sender, EventArgs e)
{
new System.Threading.Thread(new System.Threading.ThreadStart(ThreadFun)).Start(); //开启线程
} private void ThreadFun()
{
ThreadHandler hander = new ThreadHandler(Work);
hander.Invoke();
} private void Work()
{
if (抓取图片静态函数()) //抓取成功
Count++;
Label1.Text = Count.ToString();
Label1.Refresh();
}
private delegate void SendedMsg();
private void frm_Load(object sender, EventArgs e)
{
createThreads();
} /// <summary>
/// 送信スレッドポールを作成する
/// </summary>
private void createThreads()
{
int iRemain;
int iCount = Math.DivRem(this.iCurrentThreadCount, 100, out iRemain);
for (int i = 1; i <= iCount; i++)
{
for (int j = 1; j <= 100; j++)
{
String strIpAddress = String.Format(strFormatIpAddress, i, j);
Thread thread = new Thread(new ParameterizedThreadStart(
delegate(object ipAddress)
{
threadSend(ipAddress.ToString());
}));
thread.Start(strIpAddress);
}
}
iCount++;
for (int i = 1; i <= iRemain; i++)
{
String strIpAddress = String.Format(strFormatIpAddress, iCount, i);
Thread thread = new Thread(new ParameterizedThreadStart(
delegate(object ipAddress)
{
threadSend(ipAddress);
}));
thread.Start(strIpAddress);
}
} private void threadSend(object strIpAddress)
{
try
{
Invoke(new SendedMsg(this.sendMessage)); }
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
Debug.WriteLine(ex);
}
finally
{
Thread.CurrentThread.Abort();
}
} private void sendMessage()
{
lock (this.sendLock)
{
int iSendCount = int.Parse(this.lblCount.Text) + 1;
lblCount.Text = iSendCount.ToString();
}
}