我正在用 C# 创建 Windows 应用程序,我想在其中写入具有多个线程的多个文件。我从不同的端口获取数据,每个端口都有一个文件。是否有可能为每个端口创建线程并一次又一次地使用相同的线程将数据写入相应的文件? 假设我从端口 10000、10001、10002 获取数据,并且有三个文件 10000.txt、10001.txt 和 10002.txt。我必须创建三个线程分别将数据写入这三个文件,我想一次又一次地使用这些线程。可能吗?如果可能的话,您能提供一小部分代码示例吗?
最佳答案
如评论中所述,这是自找麻烦。
所以,你需要有一个线程安全的编写器类:
public class FileWriter
{
private ReaderWriterLockSlim lock_ = new ReaderWriterLockSlim();
public void WriteData(/*....whatever */)
{
lock_.EnterWriteLock();
try
{
// write your data here
}
finally
{
lock_.ExitWriteLock();
}
}
} // eo class FileWriter
适合多线程调用。但是,有一个警告。很可能存在锁争用。我使用了 ReadWriterLockSlim
类,因为您可能也想进行读取锁定,见鬼,该类还允许您从读取状态升级。
关于c# - 如何用多个线程写入单个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035029/