C# 快速写入日志 不卡线程 生产者 消费者模式

有这样一种场景需求,就是某个方法,对耗时要求很高,但是又要记录日志到数据库便于分析,由于访问数据库基本都要几十毫秒,可在方法里写入BlockingCollection,由另外的线程写入数据库。

可以看到,在我的机子上面,1ms写入了43条日志。

csharp 复制代码
BlockingCollection<LogModel> logQuenen = new BlockingCollection<LogModel>(1000);
        private void button2_Click(object sender, EventArgs e)
        {
            Task.Run(() => 
            {
                for (int i = 0; i < 100; i++)
                {
                    LogModel logModel = new LogModel();
                    logModel.Log=Guid.NewGuid().ToString();
                    logModel.Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
                    logQuenen.Add(logModel);
                }
            });
            Task.Run(() =>
            {
                while (true) 
                {
                    var logModel= logQuenen.Take();
                    string sql = $@"INSERT INTO LogTest
(
  TextC
 ,TimeC
)
VALUES
(
  '{logModel.Log}' -- TextC - VARCHAR(255)
 ,'{logModel.Time}' -- TimeC - TIMESTAMP(3)
);";
                    Function.MySQLHelper.ExecuteNonQuery(sql);
                }
            });
            MessageBox.Show("已点击!!!!!");
        }
        public class LogModel
        { 
            public string Log { set;get; }
            public string Time { set;get; }
        }
相关推荐
刘一说9 小时前
AI科技热点日报 | 2026年5月22日
数据库·人工智能·科技
LCG元9 小时前
RAG工程指南:从基础检索到生产部署全解析
java·运维·数据库
godspeed_lucip9 小时前
LLM和Agent——专题3: Agentic Workflow 入门(1)
大数据·数据库·人工智能
南境十里·墨染春水9 小时前
讲讲IO复用三个函数的底层逻辑
数据库
吴可可1239 小时前
Teigha处理CAD样条曲线的方法解析
数据库·算法·c#
XS0301069 小时前
并发编程三
开发语言·c#
这个DBA有点耶9 小时前
数据迁移避坑指南:从Oracle到国产数据库的兼容性问题
数据库·数据仓库·sql·oracle·dba
小短腿的代码世界10 小时前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
Ting-yu10 小时前
Spring AI Alibaba零基础速成(6) ---- 向量化
数据库·人工智能
dishugj10 小时前
HANA性能分析视图
数据库