文章目录

  • 一、前言
  • 二、最终运行效果
  • 三、Demo工程下载
  • 四、工程类型
  • 五、工程结构
  • 六、多线程下载核心代码

一、前言

PC端的QQ游戏大厅下载游戏的时候,我们会发现很多游戏都自己做了微端下载器,就是在先下载一个1~2M的下载器,然后再通过这个下载器去下载游戏。
那么,微端下载器用什么来制作呢?可以有很多制作方案。
本文我教你通过C#制作Windows窗体应用来实现微端下载器功能。

二、最终运行效果

如下, 最终运行效果

我把窗口的标题栏隐藏了,因为默认的标题栏不是很好看,如果想显示标题栏,只需将工程中的Form1.cs中下面这行代码注释掉即可。

发布出来的Release版本只有555KB,相对于一两百兆的游戏来说微端可以秒触达用户。

三、Demo工程下载

Demo工程我已上传到CODE CHINA,感兴趣的同学可以下载下来学习。
Demo工程下载地址:https://codechina.csdn.net/linxinfa/winform-download-demo

四、工程类型

如果你是自己制作,创建工程的时候,选择C# - Winodows - 桌面,创建Windows 窗体应用(.NET Framework)

五、工程结构

工程结构非常简单,如下

Program.cs是程序入口,Form1.cs是主窗口,DownloadThread.cs是下载逻辑。
注意,Form1.Designer.cs是可视化界面自动生成出来的代码。

六、多线程下载核心代码

多线程下载核心代码如下,具体代码可以Demo工程进行学习。
注:Demo中我下载完后执行了zip解压,所以用到了一个第三方库Ionic.Zip.Unity.dll,如果你不不需要解压,可以去掉这个dll和对应的逻辑。

using System;
using System.IO;
using System.Net;namespace winform1
{class DownloadThread{/// <summary>/// 线程开始事件/// </summary>public event EventHandler threadStartEvent;/// <summary>/// 线程执行时事件/// </summary>public event EventHandler threadEvent;/// <summary>/// 线程结束事件/// </summary>public event EventHandler threadEndEvent;/// <summary>        /// c#,.net 下载文件        /// </summary>        /// <param name="url">下载文件地址</param>       /// <param name="filename">下载后的存放地址</param>     public void RunMethod(string url, string filename){try{HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);HttpWebResponse response = (HttpWebResponse)request.GetResponse();//通知主界面,我开始了, response.ContentLength用来设置进度条的最大值threadStartEvent.Invoke(response.ContentLength, null);Stream st = response.GetResponseStream();Stream so = new FileStream(filename, FileMode.Create);long totalDownloadedByte = 0;byte[] by = new byte[1024];int osize = st.Read(by, 0, by.Length);while (osize > 0){totalDownloadedByte += osize;so.Write(by, 0, osize);osize = st.Read(by, 0, by.Length);//通知主界面我正在执行,totalDownloadedByte表示进度条当前进度threadEvent.Invoke(totalDownloadedByte, null);}so.Close();st.Close();//通知主界面我已经完成了threadEndEvent.Invoke(null, null);}catch (Exception){throw;}}}
}

使用C#制作Windows窗体应用,实现一个微端下载器功能(多线程/断点续传/微端/下载器)相关推荐

  1. Windows 窗体启动和关闭的事件顺序

    本文系转载学习. 对于关注对 Windows 窗体应用程序中引发的每个事件按次序进行处理的开发人员来说,事件引发的顺序特别重要.当某种情况需要小心处理事件时(如重绘窗体的某些部分时),必须知道事件在运 ...

  2. C# 制作不规则窗体的两种解决方案

    我的广告单元,有空点一下哦,谢谢! 冒着被拍砖的危险,投放到首页.C#制作不规则窗体应该又是一个老生常谈的问题了,可能很多老鸟会带BS的眼神,那么请老鸟们视该文章如浮云吧. 制作不规则窗体,本例采用图 ...

  3. 袖珍计算器c语言设计源码,Calculator 示例:Windows 窗体袖珍计算器

    Calculator 示例:Windows 窗体袖珍计算器 08/12/2011 本文内容 Calculator 示例使用 C++ 和 .NET Framework Windows 窗体类实现一个简单 ...

  4. 利用 Windows Vista 和 WCF 中强大的 P2P 通信功能 [转]

    从传统意义来说,P2P 应用程序开发所面临的难题包括:需要开发用于消息交换的专用协议:必须查找并连接隐藏在"网络地址转换"(NAT) 或防火墙背后的某应用程序的实例:需要支持在广域 ...

  5. 利用 Windows Vista 和 WCF 中强大的 P2P 通信功能

    从传统意义来说,P2P 应用程序开发所面临的难题包括:需要开发用于消息交换的专用协议:必须查找并连接隐藏在"网络地址转换"(NAT) 或防火墙背后的某应用程序的实例:需要支持在广域 ...

  6. 利用 Windows Vista 和 WCF 中强大的 P2P 通信功能[MSDN]

    点对点技术 利用 Windows Vista 和 WCF 中强大的 P2P 通信功能 发布日期: 2006-10-17 | 更新日期: 2006-10-17 Justin Smith 本文基于 Win ...

  7. Windows窗体应用c#制作屏保

    一.Windows 窗体应用程序 Windows窗体应用程序:是在用户计算机上运行的客户端应用程序,可显示信息.请求用户输入以及通过网络与远程计算机进行通信. 二.常用的控件 控件名称一般为表示控件类 ...

  8. 小程序制作:C# - Windows窗体应用制作加法计算器

    说明 如果你觉得文章含有侵权部分,可以联系CSDN私聊,我会适当修改. 未经允许,不得转载,如需转载,请CSDN私聊. 大佬勿喷 这些小程序都是简单的小程序,所以大佬勿喷啊! 如果你喜欢这个教程的话, ...

  9. C#:如何用VS开启人生中第一个Windows窗体应用程序(Winform)?

    摘要:Windows窗体应用程序(Winform,下文以此指代)既能有效.直观地设计Windows窗体界面,又支持内部逻辑的编写.那么,对于C#初学者来说,如何开启第一个Winform程序呢? 编程语 ...

最新文章

  1. 数据库 sqlite order by对结果集进行排序
  2. Sona(NBUT-1457)
  3. spring整合使用activemq
  4. android恢复联系人,如何从Android手机恢复联系人[最佳方式]
  5. 安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)
  6. Python基础篇【第二篇】:运算符
  7. node2vec的一些理解
  8. 学习PLC到底要不要买PLC?
  9. 有什么软件可以测试u盘的真假,U盘真假怎么检测|教你检测U盘真假的方法
  10. 如何批量保存苏宁易购里的商品图片
  11. 微信小程序自定义yPicker组件分析及省市区三级联动实现
  12. 市场调研-全球与中国安全摄像头芯片市场现状及未来发展趋势
  13. Android camera2扫描
  14. RationalDMIS 2020旋转坐标系
  15. 计算机系统应用的书,基于个性化图书推荐的协同过滤算法
  16. PHP 免费获取手机号码归属地
  17. 北京地铁背景音乐曲目
  18. 今天吃什么随机网页_今天吃什么?周末教你做衢州鸭头,便宜、干净又美味
  19. matlab修改图片位深度_BMP位图32位转为24位深度
  20. 解除B站区域限制插件观看视频卡顿

热门文章

  1. CSS渲染原理,优化策略
  2. Day07–利用JavaWeb+大数据实现纽约市共享单车地图服务
  3. 我的JAVA笔记--线程
  4. 10.数据类型-json/jsonb类型
  5. coarse-to-fine(4) meta-learning
  6. 马云购买第一台计算机,世界上第一台计算机、中国第一台计算机,运算速度都是多少?看完我震惊了。...
  7. 中华经典藏书隐私政策
  8. iscc2023-misc【详解】
  9. java mission 篡改后 网速很慢_解析导致局域网网速变慢的五大真凶
  10. 铝合金激光焊接技术(CRT脱机激光焊接示教系统)