اشکال کارمو پیدا کردم. گفتم بگم شاید برا بقیه هم لازم شد
توی رویداد کلوزینگ فرم اصلییم از
Application.Exit();
استفاده کرده بودم که باعث خروج از برنامه میشد کد کامل رویداد به شکل زیر بود
private void MainFrm_FormClosed(object sender, FormClosedEventArgs e)
{
HistoryDA _HistoryDA = new HistoryDA();
_HistoryDA.Logined(this.lblPId.Text + this.lblIp.Text, "LOGOUT");
OnlineUserDA _OnlineUserDA = new OnlineUserDA();
_OnlineUserDA.Delete(lblPId.Text);
Application.Exit();
}
که به صورت زیر اصلاح کردم.
private void MainFrm_FormClosed(object sender, FormClosedEventArgs e)
{
bool locking=true;
List<Form> openForms = new List<Form>();
foreach (Form f in Application.OpenForms)
openForms.Add(f);
foreach (Form f in openForms)
{
if (f.Name == "LoginFrm")
locking = false;
}
if (locking)
{
HistoryDA _HistoryDA = new HistoryDA();
_HistoryDA.Logined(this.lblPId.Text + this.lblIp.Text, "LOGOUT");
OnlineUserDA _OnlineUserDA = new OnlineUserDA();
_OnlineUserDA.Delete(lblPId.Text);
Application.Exit();
}
else
{
HistoryDA _HistoryDA = new HistoryDA();
_HistoryDA.Logined(this.lblPId.Text + this.lblIp.Text, "LOGOUT");
OnlineUserDA _OnlineUserDA = new OnlineUserDA();
_OnlineUserDA.Delete(lblPId.Text);
}
}
شاید روشم بهینه و اصولی نبود. که ممنون میشم اساتید موارد مورد نیاز رو بگن.