private void method(Object sender, ResearchEventArgs e)
        {
            ResearchStatus rs = GetSubresearchStatus(e.ResearchID);

            if (rs == ResearchStatus.Completed)
            {
                Interlocked.Increment(ref currentResearchIndex);
                if (currentResearchIndex >= subResearches.Count())
                {
                    StatusInfo = new ResearchStatusInfo(ResearchStatus.Completed, (uint)currentResearchIndex);
                }
                else
                {
                    StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, StatusInfo.CompletedStepsCount + 1);
                    subResearches[currentResearchIndex].StartResearch();
                }
            }
        }
        private void UpdateStatusesInTableAndInPanel(object sender, ResearchEventArgs e)
        {
            Guid id = e.ResearchID;
            ResearchStatusInfo rsi     = SessionManager.GetResearchStatus(id);
            string             status  = rsi.Status.ToString() + " ";
            double             percent = rsi.CompletedStepsCount * 100.0 / SessionManager.GetProcessStepsCount(id);

            status += Math.Round(percent, 1).ToString() + "%";

            DataGridViewRow r = FindRowInTableById(id);

            Debug.Assert(r != null);
            r.Cells["statusColumn"].Value = status;

            if (GetSelectedResearchId() == id)
            {
                statusProgress.Visible = true;
                statusProgress.Maximum = SessionManager.GetProcessStepsCount(id);
                statusProgress.Value   = (int)SessionManager.GetResearchStatus(id).CompletedStepsCount;
            }
        }