c#中的异步触发和遗忘

时间:2016-11-04 15:26:19

标签: c# sql-server multithreading

目前我正准备将c#应用程序的日志记录开发到SQL服务器表中。

我有一个名为Logger的指定类,它有一个静态方法writeToLog()

我只想调用那个静态函数而不阻塞调用线程。

如何在C#中实现干净和快速?

这些功能不会返回它们只是发射并忘记的任何内容。

谢谢你的建议

1 个答案:

答案 0 :(得分:0)

有很多可用的日志库都有可能对性能有所了解。

如果你仍然需要自己开发一种轻量级解决方案,我会想到两种方法。

1。)创建一个运行日志记录功能的Task,无需等待

2。)Log-Method将日志信息保存在使用后台线程写入SQL数据库的队列中。

我建议使用第二种方法,因为日志记录本身可以在同步函数调用中完成,而不会产生任务创建开销。

这种方法的另一个论点是可以保证日志消息的顺序。通过对每个单个消息使用Task,不定义执行顺序。

最后一个论点:将消息块写入SQL表可能更有效。通过使用队列,您可以在批量操作中编写消息。