1

我正在为我的学校项目开发我的 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();

}
4

1 回答 1

2

您需要停止计时器:

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

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

于 2013-07-05T18:44:20.480 回答