经过总过4天的学习和实践,做完了 WinForm 下 .Net 4.5 的基本异步应用,实现了一个 Http 协议下载的测试程序,为以后使用 .Net 4.5 积累知识和经验。这个小程序完成这样几个作用:

1. 实现 Http 协议下的下载,包括网页、文件

2. 使用 async/await 的方式,实现异步方式,UI 不停滞

3. 使用多线程方式更新下载进度成功,后改为不依靠线程,采用事件方式在 UI 窗体更新下载进度

4. 在未做全方面优化的前提下,运行速度蛮好

5. 通过下载进度信息,可以掌握有关下载中的部分过程

同样也有未解决的问题需要向看到此文的各位网友请教,希望能得到高手解答:

1. 以事件作为“驱动”方式来更新 UI 的方式靠不靠谱,有什么弊端?

2. 增大或减小 buffer 似乎对下载速度没有什么影响(提高),怎么做可以提高程序本身的下载速度?(假设网络条件固定,单线程条件固定,实现下载软件那种递增式变化,framework自身有没有什么可调节的方法参数)

3. 通过程序运行发现,绝大多数单次从 stream.ReadAsync 读取到的网络数据,长度基本固定,以 3472 居多(尤其是长时间的下载大一点文件)。这个数字代表什么意义?

4. 请对我的程序提出你的建议和意见,可以是任何方面的,尤其是结构方面,谢谢!

程序App及代码 App下载 代码下载

程序截图

 
 
 
标签: C#.Net 4.5异步下载

关于C语言指针的问题

 

 在学习关于C语言指针的时候,发现这样一个问题,代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h> struct A{
int a;
char b;
}; struct B{
struct A *n;
};
struct B *new_B(){
struct A t = { 100, 'c'};
struct B *p;
p = (struct B *) malloc(sizeof(struct B));
p->n = &t;
return p;
}
int main(void) {
struct B *p;
p = new_B();
printf("%d, %c\n", p->n->a, p->n->b);
free(p);
return 0;
}

  函数new_B的作用是新建一个结构体B的指针变量p,并为它分配内存,然后在函数中建立一个结构体A的变量t,并把这个变量的地址&t赋给B的成员n(n是结构体A的指针)。我们知道, t是一个局部变量,存放在栈中,在函数new_B执行结束后,t会被释放。而当我们返回主函数,然后输出,可以得到正确的结果。如果我们去掉分配内存这一行,也就是p = (struct B *) malloc(sizeof(struct B)); 执行就会出错(这也是我想要得到的结果)。

  问题是,就算分配了内存,new_B函数执行完以后t就会被释放掉,那么在主函数访问 p->n是,应该也会出错。为什么在主函数中还可以访问呢?

  请大牛给予指导解答!!!

 
 
分类: C/C++

Asycn/Await 异步编程的更多相关文章

  1. Asycn/Await 异步编程初窥

    经过两天密集型的学习,翻阅了大量 webpages ,点击了不少重点 blogs,总算基本了解了一些 async/await 搭配使用的入门技巧,总结一下 1. async/await 应该只是语法上 ...

  2. Asycn/Await 异步编程初窥(二)

    经过总过4天的学习和实践,做完了 WinForm 下 .Net 4.5 的基本异步应用,实现了一个 Http 协议下载的测试程序,为以后使用 .Net 4.5 积累知识和经验.这个小程序完成这样几个作 ...

  3. Async和Await异步编程的原理

    1. 简介 从4.0版本开始.NET引入并行编程库,用户能够通过这个库快捷的开发并行计算和并行任务处理的程序.在4.5版本中.NET又引入了Async和Await两个新的关键字,在语言层面对并行编程给 ...

  4. async And await异步编程活用基础

    原文:async And await异步编程活用基础 好久没写博客了,时隔5个月,奉上一篇精心准备的文章,希望大家能有所收获,对async 和 await 的理解有更深一层的理解. async 和 a ...

  5. 【转】C# Async/Await 异步编程中的最佳做法

    Async/Await 异步编程中的最佳做法 Stephen Cleary 近日来,涌现了许多关于 Microsoft .NET Framework 4.5 中新增了对 async 和 await 支 ...

  6. .NET Web应用中为什么要使用async/await异步编程

    前言 什么是async/await? await和async是.NET Framework4.5框架.C#5.0语法里面出现的技术,目的是用于简化异步编程模型. async和await的关系? asy ...

  7. C#中 Thread,Task,Async/Await 异步编程

    什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调 ...

  8. async/await 异步编程(转载)

    转载地址:http://www.cnblogs.com/teroy/p/4015461.html 前言 最近在学习Web Api框架的时候接触到了async/await,这个特性是.NET 4.5引入 ...

  9. async/await 异步编程

    前言 最近在学习Web Api框架的时候接触到了async/await,这个特性是.NET 4.5引入的,由于之前对于异步编程不是很了解,所以花费了一些时间学习一下相关的知识,并整理成这篇博客,如果在 ...

随机推荐

  1. NYoj The partial sum problem(简单深搜+优化)

    题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=927 代码: #include <stdio.h> #include & ...

  2. 经典算法题每日演练——第十一题 Bitmap算法

    原文:经典算法题每日演练--第十一题 Bitmap算法 在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在具有定位查找上具有O(1)的常量时间,多么的简洁优美, 但是在特定的场 ...

  3. crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理

    在工作中要用到android,然后进行网络请求的时候,打算使用httpClient. 总结一下httpClient的一些基本使用. 版本是4.2.2. 使用这个版本的过程中,百度很多,结果都是出现的o ...

  4. Python学习笔记21:数据库操作(sqlite3)

    Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言. SQLite作为后端数据库,能够搭配Python建站点,或者制作有数据存储需求的工具. SQLite还在其他领域有广泛 ...

  5. Hadoop之环境搭建

    初学Hadoop之环境搭建   阅读目录 1.安装CentOS7 2.安装JDK1.7.0 3.安装Hadoop2.6.0 4.SSH无密码登陆 本文仅作为学习笔记,供大家初学Hadoop时学习参考. ...

  6. XSS Overview

    什么是XSS? 跨站脚本攻击(Cross Site Scripting):攻击者往Web页面里插入恶意脚本,当用户浏览该页面时,嵌入页面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的.恶意的内容通 ...

  7. outlook自动备份

    在 这里 下载 http://support.microsoft.com/kb/238782

  8. IOS中 init和initialize

    一.init和initialize 1.方法类型 1> init属于对象方法,-开头 2> initialize属于类方法,+开头 2.调用时刻 1> init:每个对象初始化的时候 ...

  9. C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数

    在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中, ...

  10. javascript4

    javascript使用Unicode字符集编写的.javaScript是区分大小写的语言. 标示符就是一个名字.在javascript中用标示符来对变量和函数进行命名或者用做javascript代码 ...