.Net上的队列持久性

时间:2012-02-17 10:45:07

标签: .net persistence queue

我有一个使用System.Collections.Generic.Queue的Windows服务来保存我将处理的一些文件。

问题是我的服务失败,如果我重新启动服务,它会丢失需要处理的文件。

我怎么能坚持我的队列?我在想是否可以序列化队列并将其写入文件中。你觉得怎么样?

2 个答案:

答案 0 :(得分:2)

你可以序列化队列:

var queue = new Queue<string>();

queue.Enqueue("234");
queue.Enqueue("234");

var dataContractSerializer = new DataContractSerializer(typeof (Queue<string>));

const string outputFileName = "myfile.xml";
using (var xmlWriter = XmlWriter.Create(outputFileName))
{
    dataContractSerializer.WriteObject(xmlWriter, queue);
}

var savedContent = File.ReadAllText(outputFileName);
Console.Out.WriteLine("savedContent = {0}", savedContent);

答案 1 :(得分:0)

尽管将队列序列化为@the_joric说我也是一个很好的解决方案,但我知道Microsoft Message Queue(MSMQ)会更好用,并且非常适合我的情况。