public void HandleButton(object sender, EventArgs e)
    {
      var solutionUpdateViewModel = new SolutionUpdateViewModel();
      var addLicenseHeaderToAllProjectsCommand = new AddLicenseHeaderToAllProjectsCommand (_licenseReplacer, _defaultLicenseHeaderPage, solutionUpdateViewModel);
      var buttonThreadWorker = new SolutionLevelButtonThreadWorker(addLicenseHeaderToAllProjectsCommand);
      var dialog = new SolutionUpdateDialog(solutionUpdateViewModel);


      dialog.Closing += DialogOnClosing;
      _resharperSuspended = CommandUtility.ExecuteCommandIfExists("ReSharper_Suspend", _dte2);
      Dispatcher uiDispatcher = Dispatcher.CurrentDispatcher;

      buttonThreadWorker.ThreadDone += (o, args) =>
      {
        uiDispatcher.BeginInvoke(new Action(() => { dialog.Close(); }));
        ResumeResharper();
      };

      _solutionUpdateThread = new System.Threading.Thread(buttonThreadWorker.Run)
      {
        IsBackground = true
      };
      _solutionUpdateThread.Start(_dte2.Solution);

      dialog.ShowModal(); 
    }
    private void AddLicenseHeaderToAllProjectsCallback (object sender, EventArgs e)
    {
      IVsStatusbar statusBar = (IVsStatusbar) GetService (typeof (SVsStatusbar));

      var addLicenseHeaderToAllProjectsCommand = new AddLicenseHeaderToAllProjectsCommand (_licenseReplacer, statusBar, DefaultLicenseHeaderPage);
      addLicenseHeaderToAllProjectsCommand.Execute( _dte.Solution);  
    }