zoukankan      html  css  js  c++  java
  • Asycn/Await 异步编程

     

    经过总过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
    ", 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++
  • 相关阅读:
    Python lambda 多变量
    Python 的 zip 和 dict 组合 生成新字典
    Solr集群Replication配置与实践(四)
    linux系统搭建zookeeper集群(二)
    linux系统中安装solr搜索引擎(一)
    Solr搜索引擎集群搭建(三)
    CentOS7的yum重装
    安装konga 路由设置
    安装Snipe-IT资产管理系统
    安装GLPI资产管理
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3375584.html
Copyright © 2011-2022 走看看