Постоянство очереди на .Net - PullRequest
1 голос
/ 17 февраля 2012

У меня есть служба Windows, которая использует System.Collections.Generic.Queue, чтобы сохранить некоторые файлы, которые я буду обрабатывать.

Проблема заключается в том, что моя служба перестает работать, и если я перезапускаю службу, она теряет работуфайлы, которые нужно обработать.

Как мне сохранить мою очередь?Я думал, можно ли сериализовать очередь и записать ее в файл.Что ты думаешь?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

вы можете сериализовать очередь:

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);
0 голосов
/ 28 февраля 2012

Хотя сериализация очереди как @the_joric говорит, что я тоже хорошее решение, я понимаю, что Microsoft Message Queue (MSMQ) будет работать лучше и хорошо вписывается в мой случай.

...