C#, Подсчет итераций для процесса жалобы

Мне нужно создать программу, которая будет обрабатывать жалобы, я должен отслеживать, сколько раз я завершил процесс, это означает, что мне потребуется счетчик, который увеличивается, когда я возвращаюсь к первой форме в процессе, однако число всегда сбрасывается, когда первая форма открыт

Для runNum установлено значение public. Это код, который у меня есть для автоматического ввода данных в форму, а затем увеличения значения runmber до открытия следующей формы:

        private void autoFill()
        {
            TitlePage titlepage = new TitlePage();

            if (titlepage.getRun() == true)
            {
                int priority = runNum % 4;

                if (priority == 0)
                         priority = 2;

                txtDate.Text = DateTime.Today.ToString("dd/MM/yyyy");
                txtRef.Text = (100 + runNum).ToString();
                txtPriority.Text = priority.ToString();
                txtCustName.Text = firstNames[runNum] + " " + secondNames[runNum];
                txtCustAddress.Text = (runNum + 5).ToString() + " " + Address1[runNum] + " " + Address2[(runNum % 7)];
                txtCustEmail.Text = firstNames[runNum] + secondNames[runNum] + "@" + ISP[(runNum % 10)] + "." + Suff[(runNum % 10)];
                txtCustTel.Text = TelNo[runNum];               

                //TBD- fill this in with actual data  

                rtbComplaint.Text = "Complaint type,                         Sevarity,                         soultion exsiting,                         employee who dealt with complaint,                           Date";

                rtbComplaint.Enabled = false;
                txtPriority.Enabled = false;
                txtDate.Enabled = false;
                txtRef.Enabled = false;
                txtCustName.Enabled = false;
                txtCustName.Enabled = false;
                txtCustEmail.Enabled = false;
                txtCustAddress.Enabled = false;
                txtCustTel.Enabled = false;


                if (runNum % 2 == 0)
                {
                    rdoNo.Checked = true;
       enter code here         }
                else
                {
                    rdoYes.Checked = true;
                }



                getTimer();
                runNum++;
            }
        }

2 ответа

Решение

Public int всегда будет сброшен в этом случае. Вы должны объявить static int на своей родительской странице, если вы хотите глобальный доступ к переменной. Но глобальных переменных следует избегать. Скорее попытайтесь сохранить свои итерации в центральной точке, такой как база данных или файл, из которого вы можете извлечь значение или даже использовать кэшированный объект сервера, который вы можете обновить и получить значение снова.

Я бы пошел со статической переменной, но помните, что даже статические переменные могут быть сброшены, если перезапустить домен приложения или перекомпилировать класс веб-страницы.

см. время жизни статической переменной ASP.NET

отредактировано: извините, я предположил, что этот вопрос был для приложения asp.net. разве это не так?

если это обычная форма Windows, вам нужно будет сохранить ее на какой-либо стороне сервера, будь то БД, общий файл на сервере или что-то подобное

Другие вопросы по тегам