2012-02-17 84 views
1

我有一个Windows服务使用System.Collections.Generic.Queue保留一些我将处理的文件。队列持久性.Net

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

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

+2

使用MSMQ怎么样? – mslot 2012-02-17 10:48:07

+0

速度快吗? @mslot – 2012-02-17 10:50:26

+0

@mslot嘿谢谢,我会研究它。一些相关内容:[链接](http://msdn.microsoft.com/en-us/library/ms978430.aspx)和[链接(http://www.codeproject.com/Articles/3944/Programming-MSMQ- in-NET-Part-1)和第2部分 - [链接](http://www.codeproject.com/Articles/4348/Programming-MSMQ-in-NET-Part-2-Transactional-Messa) – 2012-02-17 10:55:14

回答

0

虽然序列化队列为@the_joric说我也是一个很好的解决方案,据我所知,微软消息队列(MSMQ)会工作得更好,并且配合好我的情况。

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);