private void RunCommand(VsFileItem itemInView)
        {
            if (this.isRunning)
            {
                return;
            }

            this.isRunning               = true;
            this.model.CanRunAnalysis    = false;
            this.model.AnalysisIsRunning = true;
            try
            {
                var bw = new BackgroundWorker {
                    WorkerReportsProgress = true
                };

                bw.RunWorkerCompleted += delegate
                {
                    this.isRunning               = false;
                    this.model.CanRunAnalysis    = true;
                    this.model.AnalysisIsRunning = false;
                };

                bw.DoWork +=
                    delegate {
                    var commandIssues = PluginOperation.ExecuteCommand(itemInView);
                    Application.Current.Dispatcher.Invoke(
                        delegate
                    {
                        this.model.UpdateLocalIssues(this, new LocalAnalysisEventCommandAnalsysisComplete(itemInView, commandIssues));
                    });
                };

                bw.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                this.notification.ReportMessage(new Message()
                {
                    Id = "PluginWrapper", Data = "Failed to Run Command : " + this.Name
                });
                this.notification.ReportException(ex);
            }
        }