Я использую Filesystemwatcher, чтобы забрать файл, преобразовать его в UTF-8 и перенести его в пункт назначения. Теперь, чего я хочу достичь, мне нужно отложить xml, который записывается в пункт назначения. т. е. через 15-20сек. Я знаю, что я могу использовать следующее здесь:C# Задержка записи в XML
System.Threading.Thread.Sleep(milliseconds);
Но если я это сделаю, это задержит нить полностью не будет его. Что произойдет с файловым накопителем, перестанет ли он собирать файлы. Моя цель - задержать, но не пропустить файлы, которые будут изменены в исходной папке. Вот как я это делаю на данный момент:
var doc = new XmlDocument();
doc.Load(FileName);
XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true };
using (var writer = XmlWriter.Create(destinationFile, settings))
{
System.Threading.Thread.Sleep(15000);
doc.Save(writer);
}
Это остановит нить и задержки записи в файл XML, который является то, что я хочу. Но что будет с наблюдателем файловой системы, тогда это тоже остановится - так как это часть того же потока.
Задержка в новом потоке: http://stackoverflow.com/questions/6913589/c-sharp-delaying-a-thread –
У вас есть для использования [Thread] (http://msdn.microsoft.com/en-us/library/aa645740 (v = vs.71) .aspx): создайте его, когда 'FilesystemWatcher' найдет новый файл, запустите его, забудьте об этом .. в потоке сделайте 'Thread.Sleep (15000);' и только затем создайте новый файл и сохраните его. – Sinatr
'Task.Delay (15000) .ContinueWith (_ => doc.Save (writer));' ??? – I4V