Esempio n. 1
0
        private void Initialize()
        {
            _bw?.CancelAsync();
            var waitScope = WaitCursorScope.Enter();

            _oldSubmoduleInfo = null;
            if (Submodules.SelectedRows.Count == 1)
            {
                _oldSubmoduleInfo = Submodules.SelectedRows[0].DataBoundItem as GitSubmoduleInfo;
            }

            lock (_modules)
            {
                _modules.Clear();
            }

            _bw = new BackgroundWorker
            {
                WorkerReportsProgress      = true,
                WorkerSupportsCancellation = true
            };
            _bw.DoWork += (sender, e) =>
            {
                foreach (var oldSubmodule in Module.GetSubmodulesInfo())
                {
                    if (_bw.CancellationPending)
                    {
                        e.Cancel = true;
                        break;
                    }

                    _bw.ReportProgress(0, oldSubmodule);
                }
            };
            _bw.ProgressChanged += (sender, e) =>
            {
                lock (_modules)
                {
                    lock (_modules)
                    {
                        _modules.Add(e.UserState as GitSubmoduleInfo);
                    }

                    if (_oldSubmoduleInfo != null)
                    {
                        DataGridViewRow row = Submodules.Rows
                                              .Cast <DataGridViewRow>()
                                              .FirstOrDefault(r => r.DataBoundItem as GitSubmoduleInfo == _oldSubmoduleInfo);

                        if (row != null)
                        {
                            row.Selected = true;
                        }
                    }
                }
            };
            _bw.RunWorkerCompleted += (_, e) => waitScope.Dispose();
            _bw.RunWorkerAsync();
        }
Esempio n. 2
0
 private void Initialize()
 {
     if (bw != null)
         bw.CancelAsync();
     UseWaitCursor = true;
     _oldSubmoduleInfo = null;
     if (Submodules.SelectedRows.Count == 1)
         _oldSubmoduleInfo = Submodules.SelectedRows[0].DataBoundItem as GitSubmoduleInfo;
     lock (modules)
         modules.Clear();
     bw = new BackgroundWorker();
     bw.DoWork += bw_DoWork;
     bw.ProgressChanged += bw_ProgressChanged;
     bw.RunWorkerCompleted += bw_RunWorkerCompleted;
     bw.WorkerReportsProgress = true;
     bw.WorkerSupportsCancellation = true;
     bw.RunWorkerAsync();
 }