先说需求,在后台有一些操作,当后台进行完某个操作的时候,给所有的用户发送推送通知,也是挺正常一需求,可是难就难在给所有的用户发通知,用户数量少的时候还好,用户数量多的情况下,可能发送推送消息的效率就会慢一些。展示到页面上就是一直在转圈圈。那么如何解决这个问题呢?
思路:如果能后台操作数据库完成,直接给用户反馈,而发送推送消息的操作呢,就放到另一个线程里慢慢执行好了,不管他。
来了解下await和asyncawait
是一个运算符,表示等待异步处理的结果,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
函数的其他地方,就可以继续写我们的一些业务逻辑,最后来个图。