CSharp写一个类,实现在不干扰主线程运行的情况下,严格按照添加日志的时间顺序记录日志到文本文件
时间: 2023-12-10 20:42:04 浏览: 74
以下是一个简单的示例代码,实现了一个异步写日志的功能,不会干扰主线程的运行:
```csharp
using System;
using System.IO;
using System.Threading.Tasks;
public class Logger
{
private readonly object _lockObject = new object();
private readonly string _logFile;
public Logger(string logFile)
{
_logFile = logFile;
}
public async Task LogAsync(string message)
{
lock (_lockObject)
{
using (var writer = File.AppendText(_logFile))
{
writer.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {message}");
}
}
}
}
```
使用方法:
```csharp
var logger = new Logger("log.txt");
await logger.LogAsync("This is a log message.");
```
在使用时,只需创建一个 `Logger` 实例,并调用 `LogAsync` 方法即可。该方法会将日志信息追加到指定的文本文件中,同时不会阻塞主线程的运行。需要注意的是,由于是异步操作,可能会出现写入不及时的情况,但不会影响日志记录的顺序。如果需要精确控制写入时间,可以使用更高级别的日志库,如 NLog、Serilog 等。
阅读全文