c# - C# 在异步任务中使用 sql 连接的最佳方法
问题描述
net core web api 项目。我通常在我的应用程序中使用日志来为整体系统健康提供一些额外的跟踪功能。目前,我的“记录”同步发生,例如
void MyMethod()
{
Log.Write("initiating");
//Do Something
Log.Write("finished");
}
现在,Log.Write() 将在主线程中消耗时间,因为它毕竟是一个 sql 插入。我怎样才能使 Log.Write 既是异步的(Task.Run 样式,我不需要返回值,所以不需要等待)并解析它自己的 sql 连接?如果 Log.Write() 使用我的控制器/方法所具有的相同连接,它将在主要执行后被释放,并且我冒着在异步任务运行时没有打开连接的风险。所以 Write() 必须解析它自己的连接,并且它是一个每分钟可能被调用数百次甚至数千次的方法。
谢谢!
解决方案
Microsoft 自己声明异步日志记录方法不是必需的,因为您不应该记录到慢速存储:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging#no-asynchronous-logger-methods
推荐阅读
- c# - 为什么实体不引用创建它的实体?
- c# - 按类型和字母顺序 A->Z 对树视图节点进行排序
- android - 计算Android中所有进程的活跃线程总数
- linux - How to pipe text into stdin
- python - Numpy - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 int)
- java - PrintWriter 消息的 Java 问题
- postgresql - PGBouncer IDLE 连接未在 Postgres 上关闭
- apache-spark - 在 EMR 集群上安装应用软件后运行引导操作
- awk - 当我指定要打印的字段时,为什么 AWK 在文件操作的默认读取记录中打印整行
- c++ - 额外的 48 来自哪里?