我是做java的,近来需要写一个小应用,我选用的c#,顺便学习一下c#
在我完成小应用的过程中出现困扰我的问题。
问题描述如下:private static int flag=0;
private static System.Timers.Timer t;
private static Hashtable ht;public Form1()
{
t= new System.Timers.Timer(1);
ht = new Hashtable();
t.Elapsed += new System.Timers.ElapsedEventHandler(show);
t.AutoReset = true;
t.Enabled = true;
}//定时器 用来从HASHTABLE中取得数据动态显示到label1上
public void show(object source, System.Timers.ElapsedEventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
if (flag >(ht.Count-1))
{
flag = 0;
}
try
{
this.label1.Text = ht[flag+""].ToString();
flag++;
}
catch (Exception eee)
{
Console.WriteLine("" +eee.ToString());
}
} //我点击label2后,定时器停止,label1显示滚动显示停止,同时根据当前flag取得hashtable中的值放到label2。
private void label2_Click(object sender, EventArgs e)
{
t.Stop();
this.label2.Text = ht[flag + ""].ToString();
}按理来说当我点击label2后,label2和label1 的text显示的值应该是一样的
但是测试中发现大部分时间是一样的,但还是有时候两者不一致,原因是hashtable的key值取的不一样
label1 取(flag+1)了 label2取flag 也就是label2_Click方法中虽然我停止了timer,但是Timer。ElapsedEventHandler
还会触发一次事件。各位帮我看看 这是如何解决?
在我完成小应用的过程中出现困扰我的问题。
问题描述如下:private static int flag=0;
private static System.Timers.Timer t;
private static Hashtable ht;public Form1()
{
t= new System.Timers.Timer(1);
ht = new Hashtable();
t.Elapsed += new System.Timers.ElapsedEventHandler(show);
t.AutoReset = true;
t.Enabled = true;
}//定时器 用来从HASHTABLE中取得数据动态显示到label1上
public void show(object source, System.Timers.ElapsedEventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
if (flag >(ht.Count-1))
{
flag = 0;
}
try
{
this.label1.Text = ht[flag+""].ToString();
flag++;
}
catch (Exception eee)
{
Console.WriteLine("" +eee.ToString());
}
} //我点击label2后,定时器停止,label1显示滚动显示停止,同时根据当前flag取得hashtable中的值放到label2。
private void label2_Click(object sender, EventArgs e)
{
t.Stop();
this.label2.Text = ht[flag + ""].ToString();
}按理来说当我点击label2后,label2和label1 的text显示的值应该是一样的
但是测试中发现大部分时间是一样的,但还是有时候两者不一致,原因是hashtable的key值取的不一样
label1 取(flag+1)了 label2取flag 也就是label2_Click方法中虽然我停止了timer,但是Timer。ElapsedEventHandler
还会触发一次事件。各位帮我看看 这是如何解决?
解决方案 »
- 双击主窗体datagridView某行弹出子窗体,在子窗体上对该行进行实时编辑
- 请教诸位关于treeview节点双击事件中为了确保是在节点上双击而不是在空白区域而定义point变量获得光标所在位置的一点困惑
- 用查询分析器查询速度快,放到程序里面查询速度慢
- 急~~!!!运行后修改没有改变(2)
- 解决代码重用问题,新建类来调用??
- 请教!怎样把ASP里的用户名和密码用cookies传到ASP.net里呢?
- 很简单的问题,在线等!gridview外的按钮怎么取不到gridview内的数据啊!
- 在线等——C#设计时删除容器控件,但保留子控件
- 有谁知道《C#入门经典》最后三章的源码下载地址吗?
- 一个程序运行不了的问题,急急!(在线等待)
- C#的用途和前途
- 大侠帮忙..关于.net里用提交按钮添加用户的连接问题
try
{
this.label1.Text = ht[flag+""].ToString();
lock(_syncLock)
{
flag++;
}
}
catch (Exception eee)
{
Console.WriteLine("" +eee.ToString());
}