0
你好,我正在嘗試創建一個日誌系統發送日誌到WCF。原則上它有一個Log(字符串文本)方法,可以在實際的日誌記錄操作之前調用多次以減少網絡喋喋不休。爲了達到這個目的,我創建了一個隊列(一個列表)的日誌和一個定時器,它以設定的頻率執行實際的日誌記錄。異步隊列返回信息
當我想在程序中記錄某些東西時,我使用Log方法。它看起來有點像這樣:
private readonly List<string> _currentLogQueue = new List<string>();
public void Log(string logText)
{
lock (_currentLogQueue)
{
_currentLogQueue.Add(logText);
}
}
然後隊列被定期發送到WCF。週期性的發送可以這樣判定:
private void SetUpQueue(TimeSpan queueFlushPeriod)
{
Task.Run(async() =>
{
while (true)
{
SendQueue(); // Does the actual communication and clears queue on success.
await Task.Delay(queueFlushPeriod);
}
});
}
我怎樣才能使SendQueue()
期間使用本記錄器錯誤反應的程序?如果需要,我可以修改SendQueue以返回某種錯誤。現在我只能想到一個以代表形式傳遞給Log()
方法的回調函數,但在異步等待的時代,它似乎非常無用而且沒有樂趣。
它實際上是一個通信記錄器。許多「類型」的類正在被一次執行,並且如果某個類型的日誌記錄失敗(爲此日誌記錄是必需的),則此類型必須停止執行。 – user1713059