Hi
try to replace
Dispatcher.BeginInvoke(new Action(() =>
with
Dispatcher.Invoke(new Action(() =>
It should help you with instant form closing.
And to fix InvalidOperationException you should create new instance of Printer every time when you want to show it, or use
Hide method instead of
close.
But in general it's not realy a good idea to show your from in bw_DoWork method, better place is right before bw.RunWorkerAsync(); method call.