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

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

runNum установлен как общедоступный int, это код, который у меня есть для автоматического ввода данных в форму, а затем увеличения 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++;
            }
        }

person DeadPoolEX    schedule 27.03.2014    source источник


Ответы (2)


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

person Hano Johannes Rossouw    schedule 27.03.2014
comment
Спасибо, это решило проблему и позволило избежать использования глобальной переменной, которую я использовал; частная статическая TitlePage tm = new TitlePage(); а затем создал функцию, которая вернула tm, это то, что вы имели в виду? - person DeadPoolEX; 27.03.2014
comment
Привет. Под глобальными переменными я имел в виду объявление статического параметра или константного статического параметра. Я имел в виду полное избегание этих типов переменных. Вы можете попробовать зафиксировать значение итерации в базе данных и извлекать и/или обновлять его каждый раз, когда это необходимо, если это возможно. - person Hano Johannes Rossouw; 02.04.2014

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

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

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

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

person naffy    schedule 27.03.2014
comment
да, его окна основаны, однако программа, которую я пишу, предназначена только для создания загрузки тестовых данных, которые, в свою очередь, дадут мне данные для тестирования другой программы, и поэтому все в порядке, если номер запуска возвращается к 0 после того, как я закрываю программу, так что там не было необходимости сохранять номер для последующего использования, извините, я должен был прояснить это в начале, однако я решил проблему сейчас, спасибо за ответ, хотя - person DeadPoolEX; 27.03.2014