C# 异步

作者: 十柒年 | 来源:发表于2019-10-22 14:38 被阅读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

    相关文章

      网友评论

          本文标题:C# 异步

          本文链接:https://www.haomeiwen.com/subject/nxyqvctx.html