zoukankan      html  css  js  c++  java
  • 异步

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

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

    异步编程中的最佳做法

    https://msdn.microsoft.com/magazine/jj991977

    ASP.NET 上的 Async/Await 简介

    https://msdn.microsoft.com/magazine/dn802603.aspx

    单元测试异步代码

    https://msdn.microsoft.com/magazine/dn818493.aspx

    1. Page 的属性【Async】设定为【true】

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ExampleAsync.Default" Async="true" %>

    2.【PageAsyncTask】定义异步任务,使用【RegisterAsyncTask】 向该页注册任务

    3.【GetMyPosts】方法 标记为【async】,且返回一个【Task】。

    4. 使用异步方法时,使用【await】关键字。

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Web.UI;
    
    namespace ExampleAsync
    {
        public partial class Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Debug.WriteLine("Start");
                RegisterAsyncTask(new PageAsyncTask(ShowOrders));
                Debug.WriteLine("Finish");
                lbl_Title.Text = "订单信息";
            }
    
            private async Task ShowOrders()
            {
                var list = await GetMyPosts();
                gv_Orders.DataSource = list;
                gv_Orders.DataBind();
                foreach (var item in list)
                {
                    Debug.WriteLine($"ID:{item.Id},Name:{item.Name}");
                    Thread.Sleep(600);
                }
            }
            private async Task<List<Order>> GetMyPosts()
            {
                return await Task.Run(() => OrderRepository.Orders);
            }
    
    
        }
    
        public class Order
        {
            public string Id { get; set; }
            public string Name { get; set; }
        }
    
        public static class OrderRepository
        {
            public static List<Order> Orders = new List<Order>();
            static OrderRepository()
            {
                for (int i = 0; i < 10; i++)
                {
                    Orders.Add(new Order() { Id = i.ToString(), Name = $"Pencil_{i}" });
                }
            }
        }
    }

    单元测试:

    using System;
    using System.Threading.Tasks;
     
    namespace ExampleAsync.BLL
    {
        public sealed class SystemUnderTest
        {
            public static async Task SimpleAsync()
            {
                await Task.Delay(10);
                throw new Exception("Should fail.");
            }
        }
    }

    using System.Threading.Tasks;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using ExampleAsync.BLL;
     
    namespace ExampleAsync.UnitTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public async Task CorrectlyFailingTest()
            {
                await SystemUnderTest.SimpleAsync();
            }
        }
    }

  • 相关阅读:
    欢迎大家来到氨帝萝卜的博客园
    Java利用自定义注解、反射实现简单BaseDao
    spring boot 2.0.1.RELEASE版本之消息总线 ConfigClient配置自动刷新
    spring cloud eureka server之端口8889之谜
    关于spring cloud “Finchley.RC2”版本在spring cloud config中的ArrayIndexOutOfBoundsException
    关于中间件、J2EE的一些概念
    IP地址 子网掩码 默认网关 DNS(转)
    知识点大图
    Javascript是单线程的深入分析(转)
    SQL查询--选择运算(1)
  • 原文地址:https://www.cnblogs.com/CodingArt/p/5855805.html
Copyright © 2011-2022 走看看