Ho un FileSystemWatcher
e gli eventi generati da questo quando un file osservato modifiche vengono sollevate su un thread diverso dal thread dell'interfaccia utente. Per evitare e cross-thread acess volation divertente, sto cercando di utilizzareDispatcher.CurrentDispatcher.BeginInvoke Non invocazione
public void RaisePathChanged(object sender, RenamedEventArgs e)
{
Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
{
// Some code to handle the file state change here.
}));
}
Questo compila bene e il RaisePathChanged
è licenziato come dovrebbe essere. Tuttavia, il codice all'interno del delegato Action(() => { /*Here*/ })
non viene mai chiamato/invocato, il codice viene semplicemente saltato.
Perché il codice viene saltato, come posso correggerlo ed è questo il modo migliore per assicurare che il codice venga eseguito sul thread che lo ha creato in WPF?
Grazie per il vostro tempo.