我有一个使用System.Collections.Generic.Queue的Windows服务来保存我将处理的一些文件。
问题是我的服务失败,如果我重新启动服务,它会丢失需要处理的文件。
我怎么能坚持我的队列?我在想是否可以序列化队列并将其写入文件中。你觉得怎么样?
答案 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)会更好用,并且非常适合我的情况。