CSharp写一个类,实现在不干扰主线程运行的情况下,记录日志到文本文件
时间: 2023-12-10 22:42:02 浏览: 81
C#实现将日志写入文本文件的方法
可以使用C#中的异步编程来实现在不干扰主线程运行的情况下记录日志到文本文件。具体实现如下:
```csharp
using System;
using System.IO;
using System.Threading.Tasks;
public class Logger
{
private readonly string _logFilePath;
public Logger(string logFilePath)
{
_logFilePath = logFilePath;
}
public async Task LogAsync(string message)
{
await Task.Run(() =>
{
using (var writer = File.AppendText(_logFilePath))
{
writer.WriteLine($"[{DateTime.Now}] {message}");
}
});
}
}
```
在上述代码中,我们首先定义了一个 `Logger` 类,它包含一个构造函数和一个异步方法 `LogAsync`。构造函数用于初始化日志文件路径,`LogAsync` 方法用于记录日志。
在 `LogAsync` 方法中,我们使用 `Task.Run` 方法来启动一个新的任务来写入日志文件,以避免干扰主线程。虽然 `Task.Run` 方法并不保证在新的线程中执行,但它可以确保不会阻塞主线程。
在新的任务中,我们使用 `File.AppendText` 方法来打开日志文件,并在文件末尾追加新的日志记录。最后,我们使用 `using` 语句来确保文件在写入完成后被正确关闭。
使用示例:
```csharp
var logger = new Logger("log.txt");
await logger.LogAsync("Hello, world!");
```
上述代码将会以异步的方式将 "Hello, world!" 写入到名为 "log.txt" 的日志文件中。
阅读全文