登录
首页 » C# » c# 多线程下载 示例代码

c# 多线程下载 示例代码

于 2015-01-14 发布
0 208
下载积分: 1 下载次数: 0

代码说明:

c# 多线程下载 示例代码

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • S7-200 POU块解密
    说明:  plc s7-200 程式 模块 口令解密工具 结对好用(PLC S7-200 program module password decryption tool is easy to use)
    2020-01-14 21:38:03下载
    积分:1
  • ListView翻页测试
    说明:  能实现ListView的翻页功能,使用的语言是C#和WPF(Page Turning Function of ListView)
    2020-06-18 22:00:01下载
    积分:1
  • 使用qt实现爬虫
    使用qt实现网络爬虫,爬取自己感兴趣的图片。原理是采集地址,然后存数据,再去下载。(Use QT to achieve web crawler and crawl pictures that you are interested in. The principle is to collect addresses, then store data, and then download them.)
    2018-05-02 14:23:10下载
    积分:1
  • MachRemote
    MACH3软件二次开发的一个实例程序,希望对喜欢MACH3二次开发的朋友有帮助。(MACH3 software secondary development of an example program, we want to enjoy MACH3 secondary development to help a friend.)
    2021-01-15 15:28:46下载
    积分:1
  • tdma
    在多跳无线网络进行TDMA方式接入时候,时间是被划分为互不重叠的时隙,边长或定长帧在时隙中进行传输。 当面向节点时候,一个节点可以得到一个或者多个时隙,节点可以利用这些时隙向任何一条链路发送报文到邻居节点。 面向链路分配时候,则是某条单向链路分得一个或多个时隙,在这些时隙中,报文发送是单向的。(Time is divided into non-overlapping slots when multi-hop wireless networks are accessed by TDMA mode. Side-length or fixed-length frames are transmitted in slots. When facing a node, a node can get one or more slots, which can be used by the node to send messages to any link to its neighbors. For link allocation, a one-way link is allocated one or more slots, in which message transmission is one-way.)
    2019-02-08 15:27:07下载
    积分:1
  • c# 扫描IP Http Header
    c# 扫描IP Http Headerusing 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.Threading;using System.IO;namespace HScan{ public partial class Form1 : Form { int _currentThreads = 0; int _maxThreads = 100; Thread main = null; Thread mt = null; List threads = new List(); public Form1() { InitializeComponent(); Control.CheckForIllegalCrossThreadCalls = false; } private void btnStart_Click(object sender, EventArgs e) { btnStart.Enabled = false; if (txtStart.Text.Trim() == "") { MessageBox.Show("起始IP不能为空."); return; } if (txtEnd.Text.Trim() == "") { MessageBox.Show("结束IP不能为空."); return; } int ts = Convert.ToInt32(txtThreads.Text); _maxThreads = ts; string startIp = txtStart.Text; string endIp = txtEnd.Text; TParameter tp=new TParameter(); tp.StartIp=startIp; tp.EndIp=endIp; tp.ThreadCount=ts; main = new Thread(new ParameterizedThreadStart(StartMe)); main.Start(tp); } protected void ThreadManage() { Thread c=null; while (true) { System.Object lockThis = new System.Object(); lock (lockThis) { for (int i = 0; i < threads.Count; i ) { if (threads[i] != null && !threads[i].IsAlive) { c = threads[i]; break; } } if (c != null) { threads.Remove(c); } } } } protected void StartMe(object ob) { mt = new Thread(new ThreadStart(ThreadManage)); mt.Start(); TParameter p = ob as TParameter; string curIp = p.StartIp; while (true) { for (int i = 0; i < _maxThreads; i ) { if (curIp != "") { if (_currentThreads >= _maxThreads) break; System.Object lockThis = new System.Object(); lock (lockThis) { _currentThreads ; if (_currentThreads > _maxThreads) _currentThreads = _maxThreads; string tip = curIp; Thread t = new Thread(new ParameterizedThreadStart(Run)); t.Start(tip); threads.Add(t); curIp = IPUtility.getLastIp(curIp, p.EndIp, 1); } } else { break; } } } } protected void Run(object ob) { string ip = ob.ToString(); SocketGetHead h = new SocketGetHead(); string ret = h.GetHtml(ip, 80); if (ret.IndexOf("DVRDVS-Webs") > 0) { ListViewItem item = new ListViewItem(); item.SubItems[0].Text = (listView1.Items.Count 1).ToString(); ListViewItem.ListViewSubItem lvSubItem = new ListViewItem.ListViewSubItem(); lvSubItem.Text = ip; item.SubItems.Add(lvSubItem); lvSubItem = new ListViewItem.ListViewSubItem(); lvSubItem.Text = "DVRDVS-Webs"; item.SubItems.Add(lvSubItem); listView1.Items.Add(item); } System.Object lockThis = new System.Object(); lock(lockThis) { lblCurIp.Text = ip; _currentThreads--; if (_currentThreads < 0) _currentThreads = 0; } } private void tsmCopy_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count > 0) { string ip = listView1.SelectedItems[0].SubItems[1].Text; Clipboard.SetText(ip); } } private void tsmExport_Click(object sender, EventArgs e) { StreamWriter writer = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory "\export.txt",true); foreach (ListViewItem item in listView1.Items) { string ip=item.SubItems[1].Text; writer.WriteLine(ip); writer.Flush(); } writer.Flush(); writer.Close(); MessageBox.Show("导出成功!"); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { if (mt != null) { mt.Interrupt(); mt.Abort(); } foreach (Thread t in threads) { t.Interrupt(); t.Abort(); } if (main != null) { main.Interrupt(); main.Abort(); } } catch { } Thread.Sleep(5000); } private void btnStop_Click(object sender, EventArgs e) { try { if (mt != null) { mt.Interrupt(); mt.Abort(); } foreach (Thread t in threads) { t.Interrupt(); t.Abort(); } if (main != null) { main.Interrupt(); main.Abort(); } } catch { } btnStart.Enabled = true; } }}
    2014-06-23下载
    积分:1
  • DBN_RBM1.1
    深度信网络测试代码,可以帮助初学者很好地了解深度学习。(Depth communications network test code that can help beginners a good understanding of the depth of learning.)
    2014-10-31 09:37:18下载
    积分:1
  • Adaptive-Kalman-Filter
    说明:  自适应卡尔曼滤波,附有卡尔曼滤波的程序实现(Adaptive Kalman filter in detail, the procedures for implementation with Kalman filtering,)
    2020-10-15 00:07:30下载
    积分:1
  • dt_client
    用于模拟客户端与服务端之的通信机制。此是客户端(For the simulated client server communication mechanism. This is a client)
    2012-11-23 23:02:25下载
    积分:1
  • c++ 邮件群发 例子源码
       #include "stdafx.h" #include #include #include "Resource.h" #include "TabDlg1.h" #include "winsock2.h"#include "stdafx.h"#include #include #include "Resource.h"#include "MainDlg.h" #include "TabDlg1.h" #include "TabDlg2.h" #include "TabDlg3.h" #include "winsock2.h"#define WM_CLICKBIT (WM_USER 1) //最小化,消息定义NOTIFYICONDATA nid;RECT RectForm; //广告窗口坐标 HFONT hFontURLNotVisit;//字体HFONT hFontURLVisited;extern TCHAR tcRunPath[MAX_PATH]; //程序当前路径目录HINSTANCE hInst; static HWND Child1hWnd,Child2hWnd,Child3hWnd; //TAB Control 3个子窗口句柄int initDialog(HWND hwnd)//初始化TAB CTR控件{ //TCHAR szWebSite[100]="http://returnc.com/archives/300.html"; //ShellExecute(hwnd,TEXT("open"),szWebSite,TEXT(""),NULL,SW_SHOWMAXIMIZED); HWND hwndTab = GetDlgItem(hwnd, IDC_TAB1); InitCommonControls(); TCITEM ItemStruct;//定义TAB的参数的结构体 ItemStruct.mask = TCIF_TEXT;//标签 ItemStruct.iImage = 0;//图像 ItemStruct.lParam = 0; ItemStruct.pszText = "SMTP设置";//选项的字符 ItemStruct.cchTextMax = 10; SendMessage(hwndTab, TCM_INSERTITEM, 0, (LPARAM)&ItemStruct);//不用SendMessage用 //TabCtrl_InsertItem(hwndTab,0,&ItemStruct);是一样一样的。 ItemStruct.pszText = "邮件内容";//同上,就是重新定义一下选项的字符 SendMessage(hwndTab, TCM_INSERTITEM, 1, (LPARAM)&ItemStruct); ItemStruct.pszText = "收件箱"; SendMessage(hwndTab, TCM_INSERTITEM, 2, (LPARAM)&ItemStruct); //Child1hWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hwndTab, (DLGPROC)NULL, 0); //网上出现的是上面这个版本,我一开始用这个,给折腾到死都没得到子窗口控件,得不到控件就没法设置了 //因为后面的(DLGPROC)被置空了。这里置空,TAB只能当摆设,所以改成你自己建好的TAB1.CPP中的PROC函数就好了 Child1hWnd = CreateDialogParam((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG1),hwndTab,(DLGPROC)TAB1_Proc,0);//创建子窗口 Child2hWnd = CreateDialogParam((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG2),hwndTab,(DLGPROC)TAB2_Proc,0); Child3hWnd = CreateDialogParam((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG3),hwndTab,(DLGPROC)TAB3_Proc,0); ShowWindow(Child1hWnd, SW_SHOWDEFAULT); //默认显示一下第一个窗口 return 0; } BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ HWND hwndTab = GetDlgItem(hWnd, IDC_TAB1);//TAB Control句柄 HWND hwnd_Link=GetDlgItem(hWnd,IDC_SYSLINK1);//Syslink Control 文字链接——版权句柄 switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); HANDLE_MSG(hWnd, WM_SYSCOMMAND, Main_OnSysCommand); //最小化到托盘 HANDLE_MSG(hWnd,WM_LBUTTONDOWN,Main_OnLButtonDown);//左键点击 HANDLE_MSG(hWnd,WM_MOUSEMOVE, Main_OnMouseMove); //鼠标移动范围 HANDLE_MSG(hWnd,WM_PAINT, Main_OnPaint); //点击后显示网站 //HANDLE_MSG(hwnd,WM_CTLCOLORSTATIC, Main_OnCtlColor); case WM_CLICKBIT://最小化后,点击图标 { if(wParam == IDI_ICON1) { switch(lParam) { case WM_LBUTTONDBLCLK://左键双击事件 { ShowWindow(hWnd, SW_SHOWNORMAL); //显示窗口 Shell_NotifyIcon(NIM_DELETE, &nid);//删除托盘图标 SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);//设置窗口坐标 } break; case WM_RBUTTONUP://右键起来时弹出快捷菜单,待完善” { MessageBox(hWnd,TEXT("作者比较懒,右键功能还没添加,双击左键恢复主窗口"),TEXT("憨笑"),MB_OK); } break; default: // ShowWindow(hWnd, SW_HIDE); break; } return TRUE; } else { return FALSE; } } break; case WM_NOTIFY: { /* switch (((LPNMHDR)lParam)->code)//文字链接部分 //TAB CONTROL 控件选择操作&文字链接 **********这一段经百次测试,10分之一左右的概率出现内存读取错误,疑似(LPNMHDR)lParam)->code读取问题 { case NM_CLICK ://点击 //case NM_RETURN ://回车键都可以打开链接 { PNMLINK pNMLink = (PNMLINK)lParam; LITEM item = pNMLink->item; NMHDR hdr = pNMLink->hdr; if ((hdr.hwndFrom == hwnd_Link) && (item.iLink == 0)) { ShellExecute(hWnd,TEXT("open"),"http://www.bachengxie.com/?p=300",TEXT(""),NULL,SW_SHOWMAXIMIZED);//打开网站 return TRUE; } else { return FALSE; } } break; default: break; } */ if ( *(LPDWORD)((LPBYTE)lParam 8)==TCN_SELCHANGE ) //子窗口选择 { int i = TabCtrl_GetCurSel(hwndTab);//返回TAB CTR选择页编号,显示对应窗口数据 switch (i) { case 0: { ShowWindow(Child1hWnd,SW_SHOWDEFAULT); ShowWindow(Child2hWnd,SW_HIDE); ShowWindow(Child3hWnd,SW_HIDE); } break; case 1: { ShowWindow(Child2hWnd,SW_SHOWDEFAULT); ShowWindow(Child1hWnd,SW_HIDE); ShowWindow(Child3hWnd,SW_HIDE); } break; case 2: { ShowWindow(Child3hWnd,SW_SHOWDEFAULT); ShowWindow(Child1hWnd,SW_HIDE); ShowWindow(Child2hWnd,SW_HIDE); } break; default: break; } return TRUE; } else { return FALSE; } } break; default: break; } return FALSE; }BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){ SkinH_AttachEx(("skins/china.she"), NULL); //载入皮肤 initDialog(hwnd); //初始化TAB控件 hFontURLNotVisit=CreateFont(15,6,0,0,0,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,"黑体");//设置TAB控件字体大小 //SendDlgItemMessage(hwnd,IDC_TAB1,WM_SETFONT,(WPARAM)hFontURLNotVisit,0); //设置TAB字体 return TRUE;}void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){ switch(id) { case IDC_TOTRAY: { ToTray(hwnd); //最小化到系统托盘 } break; case ID_HELP: { ShellExecute(NULL,"open","ReadMe.txt",NULL,NULL,SW_SHOWNORMAL); //打开ReadMe文本。 } break; default: break; }}void Main_OnClose(HWND hwnd){ SkinH_Detach(); //释放窗口皮肤 EndDialog(hwnd, 0);}void Main_OnPaint(HWND hwnd) //设置起始点及图片大小{ GetClientRect(hwnd,&RectForm); MoveWindow(GetDlgItem(hwnd,IDC_STATIC_AD),RectForm.left 20,RectForm.top 20,523,80,TRUE); //X,Y分别为30和20的顶点坐标,长为430,宽为90,自我理解} void Main_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags){ GetClientRect(hwnd,&RectForm); if(x>=RectForm.left 20 && x=RectForm.top 20 && y=RectForm.left 20 && x=RectForm.top 20 && y
    2014-12-15下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载