我正在为我的学校项目开发我的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();
}
答案 0 :(得分:2)
您需要停止计时器:
if (flag == true)
{
timer.Stop();
forma.Show();
}
现在,你的forma
实例每秒重新显示一次(因为它已经可见,直到你关闭它)没有效果,包括它关闭后,这会导致异常。