关闭表单错误

时间:2013-07-05 18:42:33

标签: c# winforms ado.net

我正在为我的学校项目开发我的C#ADO.NET项目。我已连接到SQL Server数据库,可以执行简单的CRUD操作。当我的数据库中的某个人今天过生日时,我的应用程序显示第二个表单(提醒表单),当我运行我的应用程序时显示该提醒表单,所以一切正常,但是当我尝试关闭时该提醒表单我收到此错误消息:

无法访问已处置的对象。对象名称:'Form2'。

这是我的代码:

public partial class Form1 : Form
{

Timer timer = new Timer();
Form2 forma = new Form2();


public Form1()
{
    InitializeComponent();
    var data = new BirthdayEntities();
    dataGridView1.DataSource = data.Tab_Bday.ToList();
    timer.Tick += new EventHandler(timer_Tick); 
    timer.Interval = (1000) * (1);             
    timer.Enabled = true;                       
    timer.Start();                              

}




private void timer_Tick(object sender, EventArgs e)
{
    Boolean flag = false;
    IQueryable<Tab_Bday> name;
    using (var data2 = new BirthdayEntities())
    {
        name = (from x in data2.Tab_Bday
                select x);

        foreach (var x in name)
        {
            if (x.Datum.Day == System.DateTime.Now.Day && x.Datum.Month == System.DateTime.Now.Month)
            {
                flag = true;
                break;
            }
        }
    }

    if (flag == true)
        forma.Show();

}

1 个答案:

答案 0 :(得分:2)

您需要停止计时器:

if (flag == true)
{
    timer.Stop();
    forma.Show();
}

现在,你的forma实例每秒重新显示一次(因为它已经可见,直到你关闭它)没有效果,包括它关闭后,这会导致异常。