В моей программе несколько классов и 2 формы. Моя первая форма "Main" имеет кнопку, которая покажет вторую форму "formSettings" и кнопку, которая откроет файл журнала.
FormSettings formSettings = new FormSettings();
LogClass objectLog = new LogClass();
public void settingsToolStripMenuItem1_Click(object sender, EventArgs e)
{
//shows the settings form
formSettings.Show();
}
private void viewLogToolStripMenuItem1_Click(object sender, EventArgs e)
{
try
{
objectLog.OpenLogFile();
}
catch (Exception ee)
{
objectMessageBox.ReturnErrorOpeningLogPrompt(ee.ToString());
}
}
Моя основная форма создает экземпляры как формы параметров, так и класса журнала. Мой класс настроек также создает экземпляр объекта Log. У меня сейчас проблема в том, что класс журнала выполняет некоторую проверку на основе записей из класса настроек, однако я не могу вызвать объект класса настроек, так как он вызывает класс журнала или я получаю бесконечный цикл. Вот проверка, которую он делает.
public void Write_Log_Data(string data)
{
//Create an outfile stream
FileStream outfile = new FileStream(fileLocation,
FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(outfile);
if (objectSettings.chbxLogScanResults.Checked == true)
{
if (data == null || data == "")
{
//this is for logging ip addresses
writer.WriteLine(Properties.Settings.Default.IPAddressNew + CONST_TAB +
GetDateTime());
}
//because logs containing errors or changed ips are not null data they trigger this section
else
{
//the error was already formatted so just write it
writer.WriteLine(data);
}
//close our writers
writer.Close();
outfile.Close();
}
}
Что мне интересно, должен ли файл журнала быть статичным? Это может быть статичным? Я хочу иметь возможность вызывать метод LogOpen (), который является частью LogClass из любой формы, но, как показано выше, есть некоторая проверка, которая происходит на основе записей одной из форм, вызывающих класс журнала. Что может быть хорошим решением для этого, если я не могу использовать файл журнала в качестве статического класса (я не очень хорошо понимаю статические классы, поэтому я спрашиваю).