我想知道,如何为每个线程创建一个类的单独实例。
例如,我使用线程处理记录集。考虑1000条记录和5条线程。每个线程应处理200条记录并写入5个文本文件。第一个线程应该写入file1,第二个线程应该写入file2,依此类推......我如何知道当前正在运行的线程以及如何写入正确的文件。 文件处理和数据处理在一个类中,线程调用在另一个类中。如果我创建5个线程,每个线程应该拥有它自己的类。创建第二个线程时,第一个线程将断开连接。也就是说,只有一些数据被写入file1,一旦创建了第二个文件,它就不会将剩余数据写入第一个。始终最后一个文件包含所有数据,其他文件只有很少的记录。
请任何帮助。
提前致谢
答案 0 :(得分:0)
您可能需要考虑将工作分成线程的不同方法。类和线程之间没有相关性,因此有很多方法可以构建代码以多线程方式工作,我建议采用如下方法:
// Use a queue to allow the 5 threads to pull the next record
var workItems = new ConcurrentQueue<Record>();
// Add your 1000 Records to workItems queue
// Start 5 workers to process the Records in the queue
Parallel.ForEach(Enumerable.Range(0,5), index =>
{
// Create a separate file for each thread to work with
var fileName = string.Format("outputFile_{0}.txt", index);
using (var outputStream = new StreamWriter(fileName))
{
// Dequeue Records from the queue until they're all processed
while (!workItems.IsEmpty)
{
Record record;
if (workItems.TryDequeue(out record))
{
// Process each record and write to the file
var result = ProcessRecord(record);
outputStream.Write(result);
}
}
}
})