簡體   English   中英

c#中的異步觸發和遺忘

[英]Asynchronous fire and forget in c#

目前,我正准備將 ac# 應用程序的日志記錄開發到 SQL 服務器表中。

我有一個名為Logger的指定類,它有一個靜態方法writeToLog()

我只想在不阻塞調用線程的情況下調用該靜態函數。

這在 C# 中怎么可能干凈又快速?

這些函數不會返回任何東西,它們只是被遺忘。

謝謝你的建議

有幾個可用的日志庫可能已經對性能進行了一些思考。

如果您仍然需要自己開發輕量級解決方案,我會想到兩種方法。

1.) 創建一個運行日志功能的Task ,無需等待它們

2.) 日志方法將日志信息保存在一個隊列中,該隊列通過后台線程寫入 SQL 數據庫。

我會推薦第二種方式,因為日志本身可以在同步函數調用中完成,而不會產生任務創建開銷。

這種方法的另一個論點是可以保證日志消息的順序。 通過為每條消息使用一個任務,執行的順序是沒有定義的。

最后一個論點:將消息塊寫入 SQL 表可能會更高效。 通過使用隊列,您將能夠在批量操作中寫入消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM