Smart Thread Pool经验总结二,SEO编程系列之异步编程批量取PR值

时间:12-03-10 栏目:C#开发, SEO优化 作者:kyle 评论:0 点击: 9,177 次

Smart Thread Pool不多说了,国外上好的C#线程池类,非常好用.但是网上少有详细的说明.

研究了相当的时间,今天遇到不少问题,记录下来,希望看到的人有点用.

先发软件效果图


 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            STPStartInfo stp = new STPStartInfo();
            stp.MaxWorkerThreads = 10;//最大10个线程
            stp.MinWorkerThreads = 1;//最小1个线程
            stp.IdleTimeout = 1000;//1秒超时,就是等1秒还没有任务就退出线程
            smp = new SmartThreadPool(stp);//初始化线程池
            foreach (int i in selectedRows)
            {
                Table_Source tablesource = new Table_Source();
                tablesource.Table = CheckTable(xtraTabControl1.SelectedTabPageIndex);//得到当前的表
                tablesource.ID = Convert.ToInt32(gridView1.GetRowCellValue(i, "ID"));
                tablesource.SiteName = Convert.ToString(gridView1.GetRowCellValue(i, "SiteName")).Trim();//得到当前ID的网站名
                tablesource.SiteUrl = Convert.ToString(gridView1.GetRowCellValue(i, "SiteUrl")).Trim();
                tablesource.Info = Convert.ToString(gridView1.GetRowCellValue(i, "Info")).Trim();
                if (tablesource.ID <= 0) continue;//如果ID小于0就继续下一次,防止出错
                tablesource.SiteUrl = FormatUrl(tablesource.SiteUrl);
                Console.WriteLine("循环第" + i + "次,加入URL:" + tablesource.SiteUrl);
                IWorkItemResult result = smp.QueueWorkItem(new Amib.Threading.Action<Table_Source, int>(GetPrFromUrl), tablesource, xtraTabControl1.SelectedTabPageIndex);
            }
Table_Source表是数据库里面的东西,ID是ID,Sitename是网站名,Siteurl是网站URL,Info是网站备注,PR是网站的PR,
从数据库里面循环取出来,然后扔进线程池.简单的说,把网站信息实体化到一个表,扔进可爱的池子里面.让它自己做事
下面开始取值出来,并更新主界面线程:
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void GetPrFromUrl(Table_Source table, int i)//第一个参数是实体表,每二个参数对应的是分类,这个可以不用管,我的一个分组,其实可以不要
        {
            Console.WriteLine("URL:" + table.SiteUrl);
            string pr = GetGooglePR.GetPR(table.SiteUrl).ToString();//取PR的一个代码,有需要的请联系我,但是要帮我加2个外链,哈哈.
            Console.WriteLine("URL:" + table.SiteUrl + ":得到一个PR为:" + pr);
            if (pr.Trim() == string.Empty) pr = "-1";
            table.PR = pr;//把新取得到的PR赋给实体表
            table.Update();//更新数据库
            if (this.InvokeRequired)
            {
                this.Invoke(new Action<int>((int s) =>
                {
                    RefreshTable(s);//刷新表
                }), i);
            }
            Thread.Sleep(10);//休息10毫秒
        }
好了.现在试试.快速的可以查PR了.Smart Thread Pool刚开始用以为很复杂,其实挺简单的,新建一个池子,扔任务进去就行了.下次我继续讲讲.

 

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: Smart Thread Pool经验总结二,SEO编程系列之异步编程批量取PR值,3Q

Smart Thread Pool经验总结二,SEO编程系列之异步编程批量取PR值:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人