c# timer控件在我的internal时间段内某事件被执行两次

我刷别人的数据到我winform的gridview,经过处理以后保存到我的oracle数据库,但是我发现timer1_Tick内的代码被执行了两次,我把button3_C... 我刷别人的数据到我winform的gridview,经过处理以后保存到我的oracle数据库,但是我发现timer1_Tick内的代码被执行了两次,我把button3_Click执行后剩下的数据保存到xml来找问题,发现数据有问题,代码如下
OracleHelper orcl = new OracleHelper();
CacheDb cachedb = new CacheDb();
int RowCount = 0;//记录 this.dataGridView1的当前行数
Oracle_PATIENTS.Model.PATIENTS Patients = new Oracle_PATIENTS.Model.PATIENTS();
int row_index = 0;
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
//把数据处理后,把剩下的数据存到泛型list,留到下次比较
button3_Click(null, null);
//数据插入到oracle数据库中
button1_Click(null, null);
//重新刷别人的数据库
button2_Click(null, null);
}
private void button3_Click(object sender, EventArgs e)
{
int a = this.dataGridView1.Rows.Count;
RowCount = this.dataGridView1.Rows.Count;
if (RowCount > 0)
{
for (int j = 0; j < RowCount; j++)
{
if (OracleHelper.list.Contains(this.dataGridView1[5, j].Value.ToString()))
{ this.dataGridView1.Rows.RemoveAt(j);
RowCount = RowCount - 1;
j--; }
}
}
if (RowCount > 0)
{
for (int i = 0; i < RowCount; i++)
{
//把剩下的数据加载到泛型中
OracleHelper.list.Add(this.dataGridView1[5, i].Value.ToString().Trim());
//把插入数据库病人信息累加保存在日志文件
string filePath = Application.StartupPath + "\\LogText.xml";
XmlMethod xmlmethod = new XmlMethod(filePath);
XmlNode newnode = xmlmethod.FindNode("//用来保存出错信息");
xmlmethod.CreateChildNodes(newnode, orcl.FormatTimeString(DateTime.Now),"剩下的ROwCOunt"+RowCount.ToString()+"-" +a +"-"+"数组"+ OracleHelper.list.Count.ToString() + "-" + this.dataGridView1[0, i].Value.ToString(), filePath);
}
} }
private void button1_Click(object sender, EventArgs e)
{//保存gridview剩下的数据到我们的oracle数据库}
private void button2_Click(object sender, EventArgs e)
{ //刷别人数据库的数据到我的girdview中 }
private void Form1_Load(object sender, EventArgs e)
{//初始化某些数据
button2_Click(null, null);
//把现存的oracle数据保存到list泛型中
}

我打开我的xml文档看到这样的数据证明在internal时间段4分钟内button3_Click被执行了两次
<Time-2011-10-15-23时18分>剩下的ROwCOunt1-10-数组11-林秋妮</Time-2011-10-15-23时18分>
<Time-2011-10-15-23时19分>剩下的ROwCOunt1-10-数组11-林秋妮</Time-2011-10-15-23时19分>
展开
 我来答
匿名用户
2011-10-16
展开全部
看看是不是timer1_Tick之外地方调用了button3_Click,或者是什么地方有将timer1.Enabled设为True了

希望有所帮助
更多追问追答
追问
没有啦,就timer1_Tick调用了button3_Click,Form1_Load时候才设为timer1.Enabled=True的啊,我晕死
追答
你别晕,首先timer1_Tick事件你都贴出timer1.Enabled = false为什么load事件中不贴出timer1.Enabled=True?
既然timer1控件执行一次后Enable为false了,你完全可以调试一步一步执行下来,查找错误
wlmaiwmm
2011-10-16 · TA获得超过108个赞
知道答主
回答量:129
采纳率:0%
帮助的人:47.9万
展开全部
后台调用你放到ispostback里巴。
更多追问追答
追问
但是我的是winform程序啊,有其他的思路么?
追答
设个变量吧。变量为1时继续执行并且变量+1,变量为2时退出方法,变量设为1.
主要是根据变量的值来控制是否执行方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式