2
Я написал следующий код.FileSystemWatcher не вызывал событие изменения
[XmlRoot("myxml")]
public class myxml
{
[XmlElement("one")]
public string one { get; set; }
[XmlElement("two")]
public string two { get; set; }
}
class Program
{
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
//
static void Main(string[] args)
{
myxml m = new myxml();
m.one = "111";
m.two = "222";
FileSystemWatcher watcher = new FileSystemWatcher(@"c:\", "myxml.xml");
watcher.Changed += new FileSystemEventHandler(OnChanged);
FileStream fs = new FileStream(@"c:\myxml.xml", FileMode.Open);
XmlSerializer x = new XmlSerializer(m.GetType());
x.Serialize(fs, m);
fs.Close();
}
}
теперь я думал, что после того, как в следующей строке OnChanged событие вызывается, но нет ...
x.Serialize(fs, m);
также после того, как эта линия ничего не произошло
fs.Close();
любая идея?
Спасибо, а после ведьмы он поднимет? after'x.Serialize (fs, m); 'или после' fs.Close(); ' – MoShe
Я не знаю, будет ли Serialize очищать буфер ввода-вывода, но, разумеется, Close будет делать. Однако, используя вашу программу, это абсолютно возможно, и я думаю, что очень вероятно, что у вас ничего не напечатано, потому что у наблюдателя нет возможности запустить событие, программа завершается после вызова Close. –
это только тестовое приложение, чтобы увидеть, возбуждает ли оно событие. Мне просто нужно быть уверенным, что событие onChange будет расти только после завершения сериализации файла. – MoShe