A part of the .NET Framework that provides a unified programming model for building line-of-business desktop applications on Windows.
I think that there are certain reasons to try this fix of '+=' operations:
fsw.Changed += ( s, a ) => Dispatcher.Invoke( ( ) => Fsw_Changed( s, a ) );
fsw.Created += ( s, a ) => Dispatcher.Invoke( ( ) => Fsw_Created( s, a ) );
fsw.Deleted += ( s, a ) => Dispatcher.Invoke( ( ) => Fsw_Deleted( s, a ) );
fsw.Renamed += ( s, a ) => Dispatcher.Invoke( ( ) => Fsw_Renamed( s, a ) );
Or, instead of these changes, try a shorter fix:
fsw.SynchronizingObject = this;