线程,线程池执行2000个以上任务出错,异步不会

飞天凤凰601 2017-09-08 02:56:22
1、ThreadPool.QueueUserWorkItem(new WaitCallback(ReadLog), mylogs); //中途关闭容易引起异常 作窗体关闭设置或其它处理

2、
Thread[] threadlogs=new Thread[filenamelist.Count]; ; //i是循环变量

threadlogs[i] = new Thread(new ParameterizedThreadStart(ReadLog)); //中途关闭容易引起异常 作窗体关闭设置或其它处理(线程Abort)
threadlogs[i].IsBackground = true;
threadlogs[i].Start(mylogs);

3、
// //异步
Action<object> readlog = new Action<object>(ReadLog); //为了线程池调用,这里用object
readlog.BeginInvoke(mylogs, ReadLogCallBack, null); /// 最后一个参数 result.AsyncState

哪ReadLog是读入Log文件到数据库,

我要导入2400个文件,用异步不出问题,
用线程池和线程,当导入文件大于2000个,就要出错误

我要作什么处理,让线程或线程池不出问题……?
...全文
417 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng2005 2017-09-08
  • 打赏
  • 举报
回复
幸亏不是100万个文件,要不你开100万个现成,就是给你个小型机也不实现...
飞天凤凰601 2017-09-08
  • 打赏
  • 举报
回复
自己解决了!!!!!!
ilikeff8 2017-09-08
  • 打赏
  • 举报
回复
不单要看线程数,主要还是看线程本身占用的资源,否则这么多线程是非常吃资源的, 而简单线程开一万个都无所谓
            this.Text = "0";

            this.Load += (sender, e) =>
            {
                ThreadPool.QueueUserWorkItem(obj =>
                {
                    for (int i = 0; i < 10000; i++)
                    {
                        new Thread(new ThreadStart(() =>
                        {
                            this.Invoke((Action)(() =>
                            {
                                this.Text = (int.Parse(this.Text) + 1).ToString();
                            }));

                            while (true)
                            {
                                Thread.Sleep(0);
                            }
                        })).Start();
                    }
                });
            };
  • 打赏
  • 举报
回复
一个文件一个线程,总共2000多个线程, 这种形式是从哪里学来的?
正怒月神 2017-09-08
  • 打赏
  • 举报
回复
用并行处理 AsParallel() sp1234在这个帖子里,回答了。 http://bbs.csdn.net/topics/392258599
易2017 2017-09-08
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/350214246跟着学习,找了一下以前的帖子,楼主可以看下,我觉得还是CPU资源限制的问题
飞天凤凰601 2017-09-08
  • 打赏
  • 举报
回复
引用 3 楼 a755362405 的回复:
为什么要那么多个一起进行呢,一个个读取写入来不行?
一个线程一个,有问题吗?文件大小 不一样,读到后面,前面都结束 一大半了。
飞天凤凰601 2017-09-08
  • 打赏
  • 举报
回复
而且很多线程很快就结束了——
键盘敲出字 2017-09-08
  • 打赏
  • 举报
回复
为什么要那么多个一起进行呢,一个个读取写入来不行?
飞天凤凰601 2017-09-08
  • 打赏
  • 举报
回复
引用 1 楼 qq_38588710 的回复:
你确定你的电脑配置能开2000个线程,我的反正只能开1000个,你若能开这么多,先佩服你的电脑牛,再想想你占用这么多资源得多卡
I7 ,4790, 确实能到2000, 我现在不觉得卡的问题, 关键是异步不出错误,也不会卡,线程会挂掉……
易2017 2017-09-08
  • 打赏
  • 举报
回复
你确定你的电脑配置能开2000个线程,我的反正只能开1000个,你若能开这么多,先佩服你的电脑牛,再想想你占用这么多资源得多卡

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧