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