C# 异步

2019-10-22  本文已影响0人  十柒年

先说需求,在后台有一些操作,当后台进行完某个操作的时候,给所有的用户发送推送通知,也是挺正常一需求,可是难就难在给所有的用户发通知,用户数量少的时候还好,用户数量多的情况下,可能发送推送消息的效率就会慢一些。展示到页面上就是一直在转圈圈。那么如何解决这个问题呢?

思路:如果能后台操作数据库完成,直接给用户反馈,而发送推送消息的操作呢,就放到另一个线程里慢慢执行好了,不管他。

来了解下await和async
await是一个运算符,表示等待异步处理的结果,
async是一个修饰符,它只能用在方法或者事件处理程序的签名中。
先简单了解下,详情请参考这篇文章https://www.cnblogs.com/fangyz/p/5134018.html

接来下看代码。

using System;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            ThreadTest test = new ThreadTest();
            test.Func1();
            Console.WriteLine("这里是返回结果");
           
        }
    }
    class ThreadTest
    {
        public async Task Func1()
        {
            await Task.Run(() =>
            {
                for (int i = 0; i < 9999; i++)
                {
                    if (i == 9998)
                    {
                        Console.WriteLine("这里是耗时的方法");
                    }
                }
            });
        }
    }
}

这就是一个简单的控制台应用程序,当我们在Main函数里面时,需要调用一个异步的方法,ThreadTest这个方法里面就可以放一些推送消息的操作,我不需要返回值,所以直接实例化后调用方法即可。Main函数的其他地方,就可以继续写我们的一些业务逻辑,最后来个图。

image.png
上一篇下一篇

猜你喜欢

热点阅读