public void OpenClrRuntime()
        {
            if (CurrentDataTarget == null)
            {
                OpenDump();
            }

            if (CurrentDataTarget == null)
            {
                //throw new ArgumentNullException("_dataTarget");
                return;
            }

            try
            {
                var info = CurrentDataTarget.ClrVersions.Single();
            }
            catch (NullReferenceException ex)
            {
                // set error header
                MessageBox.Show(ex.Message, "Cannot opern CLR window", MessageBoxButton.OK, MessageBoxImage.Error);

                var viewModel2 = new DataTargetViewModel(CurrentDataTarget);
                ActivateItem(viewModel2);
                return;
            }
            catch (InvalidOperationException ex)
            {
                MessageBox.Show("Cannot find CLR in this process", "Cannot open CLR window", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            var clrVersion = CurrentDataTarget.ClrVersions.FirstOrDefault();

            if (clrVersion == null)
            {
                throw new ArgumentNullException("clrVersion");
            }

            try
            {
                if (CurrentClrRuntime == null)
                {
                    CurrentClrRuntime = CurrentDataTarget.CreateRuntime(clrVersion.TryGetDacLocation() ?? clrVersion.TryDownloadDac());
                }
            }
            catch (SystemException ex)
            {
                MessageBox.Show("Cannot open CLR runtime, due the: " + ex.Message);
                return;
            }

            var viewModel = new ClrRuntimeViewModel(CurrentClrRuntime);

            ActivateItem(viewModel);
        }
        public void OpenDataTarget()
        {
            if (CurrentDataTarget == null)
            {
                OpenDump();
            }

            if (CurrentDataTarget != null)
            {
                var viewModel = new DataTargetViewModel(CurrentDataTarget);
                ActivateItem(viewModel);
            }
        }
        private void OpenDump(string path)
        {
            if (String.IsNullOrEmpty(path))
            {
                throw new ArgumentException(nameof(path));
            }

            if (_model.TryToOpenDump(path, out CurrentDataTarget))
            {
                try
                {
                    var viewModel2 = new DataTargetViewModel(CurrentDataTarget);
                    ActivateItem(viewModel2);
                }
                catch (NullReferenceException ex)
                {
                    // dump without clr process
                }
                catch (ClrDiagnosticsException ex)
                { }
            }
        }
        public void OpenDump()
        {
            CurrentDataTarget = null;
            CurrentClrRuntime = null;

            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter           = "Dump files (*.dmp)|*.dmp";
            dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            string path;
            var    res = dlg.ShowDialog();

            if (res.HasValue && res.Value)
            {
                path = dlg.FileName;
            }
            else
            {
                return;
            }

            if (_model.TryToOpenDump(path, out CurrentDataTarget))
            {
                try
                {
                    var viewModel2 = new DataTargetViewModel(CurrentDataTarget);
                    ActivateItem(viewModel2);
                }
                catch (NullReferenceException ex)
                {
                    // dump without clr process
                }
                catch (ClrDiagnosticsException ex)
                { }
            }
        }