2012-02-17 123 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);