public void CallStudent(Student student)
        {
            lock (_pauseLock)
            {
                if (_isPaused) Monitor.Wait(_pauseLock);
            }

            if (string.IsNullOrEmpty(student.Name))
            {
                throw new ArgumentNullException();
            }
            _view.DisplayStudentName(student, _amountStudentsPassed);

            Thread.Sleep(Randomizer.GetStudentExaminationTime());

            var mark = Randomizer.GetStudentMark();

            _view.DisplayStudentMark(mark, _amountStudentsPassed);
            _amountStudentsPassed++;
            _view.SetProgress(_amountStudentsPassed * 100 / _amountStudents);

            if (_amountStudents == _amountStudentsPassed)
            {
                _view.InformAboutFinish();
            }
        }
        public void ExamineStudent(Student student)
        {
            if (student == null)
            {
                throw new ArgumentNullException();
            }

               _communicator.CallStudent(student);
        }
 public void DisplayStudentName(Student student, int studentId)
 {
     if (string.IsNullOrEmpty(student?.Name))
     {
         throw new ArgumentNullException();
     }
     InvokeIfRequired(() =>
     {
         studentsListView.Items.Add(new ListViewItem(new[] { (studentId + 1).ToString(), student.Name, "" }));
     }, studentsListView);
 }