W jednym programie tworze plik txt i zapisuje go na dysku. Drugi program przy uruchamianiu się odpala metodę ReadFromFile()
to co znajdzie w pliku parsuje na xaml i wyświetla w oknie. I dotąd wszystko działa. Napisałem klasę która sprawdza czy plik został zmodyfikowany i wtedy odpala jeszcze raz metodę ReadFromFile()
ale tym razem generuje wyjątek XamlParseException. Który co dziwne nie jest przechwytywany przez catch. Kiedy uruchomię program ponownie bez problemu wczytuje zmodyfikowany wcześniej plik, co się tu dzieje? Pierwsze uruchomienie metody działa, a drugie już nie.
Błąd wywala w tej linijce Grid inputGrid = (Grid)XamlReader.Load(xmlReader);
A tu metoda:
private void ReadFromFile()
{
try
{
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Background,
new Action(() => this.Grid1.Children.Clear()));
StringReader stringReader = new StringReader(File.ReadAllText(path));
XmlReader xmlReader = XmlReader.Create(stringReader);
Grid inputGrid = (Grid)XamlReader.Load(xmlReader);
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Background,
new Action(() => this.Grid1.Children.Add(inputGrid)));
System.Diagnostics.Debug.WriteLine("udane");
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("nieudane");
MessageBox.Show(ex.Message);
}
}
Dodam jeszcze że błąd jest też wywalany jeśli plik zostanie zedytowany z notatnika.