/// <summary>
        /// After the thread complete, load the xaml home document
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // First, handle the case where an exception was thrown.
            if (e.Error != null)
            {
                Tracer.Error("HomeDocument.bw_RunWorkerCompleted", e.Error);
            }
            else
            {
                Tracer.Verbose("HomeDocument:bw_RunWorkerCompleted", "START");

                UrlSaveHelper hlp = (UrlSaveHelper)e.Result;

                // Finally, handle the case where the operation succeeded.
                if (File.Exists(base.Context.FullName))
                {
                    try
                    {
                        FileStream fs = File.OpenRead(base.Context.FullName);
                        FlowDocViewer.Document = (FlowDocument)XamlReader.Load(fs);
                        fs.Close();

                        Tracer.Verbose("HomeDocument:bw_RunWorkerCompleted", "Internet document loaded");
                    }
                    catch (Exception)
                    {
                        //load the config from resources
                        using (Stream fs = Application.ResourceAssembly.GetManifestResourceStream("ReflectionStudio.Resources.Embedded.Home.xaml"))
                        {
                            if (fs == null)
                            {
                                throw new InvalidOperationException("Could not find embedded resource");
                            }

                            FlowDocViewer.Document = (FlowDocument)XamlReader.Load(fs);

                            fs.Close();

                            Tracer.Verbose("HomeDocument:bw_RunWorkerCompleted", "Local document loaded");
                        }
                    }

                    ParseHyperlink(FlowDocViewer.Document);

                    WaitPanel.Stop();

                    Tracer.Verbose("HomeDocument:bw_RunWorkerCompleted", "END");
                }
            }
        }
 /// <summary>
 /// Use UrlSaveHelper to get the home document from internet
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void bw_DoWork(object sender, DoWorkEventArgs e)
 {
     Tracer.Verbose("HomeDocument:bw_DoWork", "START");
     try
     {
         UrlSaveHelper hlp = (UrlSaveHelper)e.Argument;
         hlp.SaveUrlContent();
     }
     catch (Exception all)
     {
         Tracer.Error("HomeDocument.bw_DoWork", all);
     }
     finally
     {
         Tracer.Verbose("HomeDocument:bw_DoWork", "END");
     }
 }