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, вам нужно будет сохранить ее на какой-либо стороне сервера, будь то БД, общий файл на сервере или что-то подобное