源代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.Collections;

namespace WindowsFormsApplication14
{
    public partial class Form1 : Form
    {
        public struct param
        {
            public int js;
            public string url;
        }
        public delegate void listview1AddImg(String imgname,int js);
        public listview1AddImg myDelegate;

public Form1()
        {
            InitializeComponent();
            this.imageList1.ImageSize = new Size(130, 130);
            this.listView1.LargeImageList = this.imageList1;
            myDelegate = new listview1AddImg(listview1AddImgMethod);
        }

p rivate void button1_Click(object sender, EventArgs e)
        {
            this.listView1.Items.Clear();
            String url = @"http://image.baidu.com/i?tn=baiduimage&ct=201326592&cl=2&lm=-1&fr=&pv=&ic=0&z=0&word=%C3%C0%C5%AE&s=0";
            Thread myThread1 = new Thread(downimg);
            myThread1.Start((object)url);
        }

p rivate void downimg(object url)
        {

String imgUrl = null;
            int js1=0;
            param param1=new param();
           
            WebClient web1 = new WebClient();
            byte[] data1= web1.DownloadData((String)url);
            String html = Encoding.Default.GetString(data1);
            //从网页源码中分析出图片,并且投入线程池
            MatchCollection m1 = Regex.Matches(html, @"<img\s+name='pn\d+'\s+src=""(?<smallpic>[\w:/\.,&=]*)",RegexOptions.IgnoreCase);
            foreach (Match m in m1)
            {
                param1.js = js1;
                js1++;
                imgUrl = m.Groups["smallpic"].ToString();
                param1.url = imgUrl;
                ThreadPool.QueueUserWorkItem(new WaitCallback(dowork),(object)param1);
               
            }

}

p rivate void dowork(object list1)
        {
            //下载图片
            String imgname=null;
            param param1 = new param();
            param1= (param)list1 ;
            WebClient web1 = new WebClient();
            //Bitmap bmp = new Bitmap(web1.OpenRead(param1.url));
            imgname = param1.js.ToString() + ".jpg";
            web1.DownloadFile(param1.url, Application.StartupPath + "\\" +imgname);
            this.listView1.Invoke(this.myDelegate, new object[] {imgname,param1.js});
        }

******* void listview1AddImgMethod(String imgname,int js)
        {
            try
            {
                this.imageList1.Images.Add(Image.FromFile(Application.StartupPath + "\\" + imgname));
                this.listView1.Items.Add(imgname);
                this.listView1.Items[js].ImageIndex = js;
                Debug.WriteLine(js);
                Debug.WriteLine(imgname);
            }
            catch(Exception e)
            {
                Debug.WriteLine(e.Message);
            }

}
    }
}

源代码下载

转载于:https://www.cnblogs.com/hackpig/archive/2010/02/15/1668478.html

C#多线程池演示例程--下载图片相关推荐

  1. 2021-03-10 Python多线程爬虫快速批量下载图片

    Python多线程爬虫快速批量下载图片 1.完成这个需要导入的模块 urllib,random,queue(队列),threading,time,os,json 第三方模块的安装 键盘win+R,输入 ...

  2. java【多线程】之同步下载图片

    准备阶段: 首先需要在项目中导入一个Commons.io的jar包: 这个jar包可以在 点击这里过去下载 到这个页面之后往下翻,就可以看到这个jar包的下载地址了: 点击进去,找到我们要的IO 点击 ...

  3. java下载图片压缩包_java压缩文件和下载图片示例

    本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...

  4. python3爬虫系列16之多线程爬取汽车之家批量下载图片

    python3爬虫系列16之多线程爬取汽车之家批量下载图片 1.前言 上一篇呢,python3爬虫系列14之爬虫增速多线程,线程池,队列的用法(通俗易懂),主要介绍了线程,多线程,和两个线程池的使用. ...

  5. 多线程下载图片并压缩

    最近在做一个需求:从其他系统的ftp目录下载存储图片url的文件,然后读取文件中的url地址,根据地址下载图片后按天压缩成一个包,平均一个地址文件中包含4000个地址左右,也就是说一个文件扫描后需要下 ...

  6. Python 多线程下载图片

    多线程下载图片 参考链接: Python标准库-urllib和urllib3 urllib实战2–urllib基础urlretrieve().urlcleanup().info().getcode() ...

  7. python爬虫之多线程threading、多进程multiprocessing、协程aiohttp 批量下载图片

    一.单线程常规下载 常规单线程执行脚本爬取壁纸图片,只爬取一页的图片. import datetime import re import requests from bs4 import Beauti ...

  8. java 多线程下载图片_java多线程实现下载图片并压缩

    最近在做一个需求:从其他系统的ftp目录下载存储图片url的文件,然后读取文件中的url地址,根据地址下载图片后按天压缩成一个包,平均一个地址文件中包含4000个地址左右,也就是说一个文件扫描后需要下 ...

  9. java线程池下载图片,压缩图片大小

    java对于线程池下载图片,以及图片的压缩,删除 其中引用了thumbnailator 来进行压缩减少了我们工作量 maven地址 <!-- https://mvnrepository.com/ ...

  10. 多线程 python tcp 图片_Python第四周之网络编程TCP (服务器/客户端; 线程下载图片;线程版服务器和客户端(单人、多人)) UDP...

    # 网络编程 # 计算机网络, 把多台独立自主的计算机,连接到网络,实现资源的共享 # Internet网,(互联网)eniac 1946美国大学第一台电子计算机 # # 一个TCP报文除了包含要传输 ...

最新文章

  1. 上海海事大学百度智慧交通车模介绍
  2. Selenium 页面自动化测试 面试 问题汇总
  3. 波音公司计划利用 3D 打印技术制作模块化卫星
  4. 老婆,我会好好爱你的
  5. mysql设计的步骤_mysql笔记8_数据库设计步骤
  6. ORACLE修改表空间方法
  7. 3_1 StrategyMode.cpp 策略模式
  8. Python实现快速的风格迁移
  9. java jtable defaulttablemodel_java – JTable和DefaultTableModel
  10. leetcode47. 全排列 II
  11. 【转】WebApi 身份认证解决方案:Basic基础认证
  12. conda指定路径_导出不带前缀变量的conda环境,该变量显示executab的本地路径
  13. SpringBoot面试题及答案整理
  14. SAP License:ABC作业成本法-平行记帐
  15. C# Base64方式的编码与解码
  16. CS224N刷题——Assignment1.11.2_Softmax神经网络基础
  17. django的orm获取字段去重值
  18. linux笔记:shell编程-正则表达式
  19. Mysql 临时表详解(temporary table)
  20. 数据结构与算法实验01-使用链表实现多项式乘法

热门文章

  1. java实战 ——分类模块的开发
  2. Collectors.averagingLong()
  3. 【渝粤教育】国家开放大学2018年秋季 1356T高级英语听说(2) 参考试题
  4. 软件公司产品营销大数据分析(上)
  5. 【sklearn第二十六讲】模型评价
  6. FPGA智能传感系统(一)Verilog基础入门
  7. 软件类配置(二)【Windows中安装python、pycharm、opencv、anaconda】
  8. javascript创建动态表格
  9. 实验四:用一维数组输出等腰三角形的杨辉三角
  10. 看不懂JDK8的流操作?5分钟带你入门(转)