zoukankan      html  css  js  c++  java
  • asp.net webform中使用async,await实现异步操作

    摘要

    最近想着将项目中的部分耗时的操作,进行异步化。就自己弄个demo进行学习。只需下面几个步骤就可以将aspx页面中注册异步操作。

    demo

    比如我们需要抓取某个url的内容,这个时候我们可能会有下面的一个方法。

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Wolfy.AsyncWeb
    {
        public partial class Index : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    this.Page.RegisterAsyncTask(new PageAsyncTask(GetHtmlAsync));
                }
            }
            private async Task GetHtmlAsync()
            {
                string url = "http://www.cnblogs.com/";
                WebClient client = new WebClient();
                client.Encoding = Encoding.UTF8;
                string html = await client.DownloadStringTaskAsync(url);
                string strPath = MapPath("~/html");
                if (!Directory.Exists(strPath))
                {
                    Directory.CreateDirectory(strPath);
                }
                string savePath = Path.Combine(strPath, "blog.txt");
                using (FileStream fs = new FileStream(savePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
                {
                    byte[] buffer = Encoding.UTF8.GetBytes(html);
                    await fs.WriteAsync(buffer, 0, buffer.Length);
                }
            }
        }
    }

    这时候以为大功告成了,浏览页面的时候发现还是少了点东西。

    找到对应的页面添加上async特性。

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Wolfy.AsyncWeb.Index" Async="true" %>

    结果

    参考

    http://blog.csdn.net/youaregoo/article/details/8973387

    http://mrbool.com/how-to-create-asynchronous-device-page-in-asp-net-4-5/26022

    http://www.cnblogs.com/dudu/p/aspnet-webform-async.html

  • 相关阅读:
    CentOS7安装MySQL5.7
    .gdbinit文件配置
    Linux 动态库加载
    GDB常用调试命令(二)
    git删除缓存区中文件
    git添加空文件夹
    Linux 打开core dump功能
    C++ 预处理器
    C++ 模板
    C++ 命名空间
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/5620265.html
Copyright © 2011-2022 走看看