紧急求救!关于Timer计时器触发的问题
非IT从业人员,紧急求救各位大佬!
各位大佬,最近我用winform编写了一个利用NPOI读取多个excel文件的小程序,因为excel文件有点多,就有点耗时,然后就想统计下NPOI读取需要的时间,一开始我用form中的timer控件,发现触发语句写在主程序中可以触发,但一旦写在NPOI调用语句中时就无法触发。我就换成了System.Timers来尝试,发现在NPOI的语句中可以触发,但是触发后无法跨线程更新form中的label把时间现实出来。。。。
然后我又上网查,说跨线程更新UI需要用到委托,这是我的代码
首先是添加system.timers类
然后添加 Elapsed事件
其中GetTime是一个把计时由毫秒转化成分,秒的函数
接着是创建委托和回调函数
做完了这些,最后我发现再我调用NPOI的时候依旧无法更新UI,调用结束才可以更新
timer启动我写在了NPOI的语句前面
就是不成功,求救啊,大佬们
我是个学土木的
这几天要弄死我了
分数都被坑人的CSDN坑光了,大佬们见谅

各位大佬,最近我用winform编写了一个利用NPOI读取多个excel文件的小程序,因为excel文件有点多,就有点耗时,然后就想统计下NPOI读取需要的时间,一开始我用form中的timer控件,发现触发语句写在主程序中可以触发,但一旦写在NPOI调用语句中时就无法触发。我就换成了System.Timers来尝试,发现在NPOI的语句中可以触发,但是触发后无法跨线程更新form中的label把时间现实出来。。。。
然后我又上网查,说跨线程更新UI需要用到委托,这是我的代码
首先是添加system.timers类
System.Timers.Timer timer = new System.Timers.Timer();
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.AutoReset = true;
timer.Interval = 500;
timer.Enabled = true;然后添加 Elapsed事件
public void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
t = t + 1;//得到总的毫秒数
time = GetAllTime(t);//转化成秒表
this.SetText(time);
}其中GetTime是一个把计时由毫秒转化成分,秒的函数
接着是创建委托和回调函数
}
delegate void SetTextCallback(string x);
private void SetText(string x)
{
//创建一个委托,用于封装一个方法,在这里是封装了 控制更新控件 的方法
//System.Action invokeAction = new System.Action(ChangeControlsByTimer);
//判断操作控件的线程是否创建控件的线程
//调用方位于创建控件所在的线程以外的线程中,如果在其他线程则对控件进行方法调用时必须调用 Invoke 方法
if (this.label2.InvokeRequired)
{
//与调用线程不同的线程上创建(说明您必须通过 Invoke 方法对控件进行调用)
SetTextCallback d = new SetTextCallback(SetText);
this.label2.Invoke(d, new object[] {x });
}
else
{
label2.Text = x;
}
}
public static string time;做完了这些,最后我发现再我调用NPOI的时候依旧无法更新UI,调用结束才可以更新
timer启动我写在了NPOI的语句前面
timer.Enabled = true;
for (int j = 0; j < 12; j++)
{
IWorkbook workbook = null;
FileStream fileStream = new FileStream(fileNames[j], FileMode.Open, FileAccess.Read);
if (fileNames[j].IndexOf(".xlsx") > 0)
{
//xlsx数据读入workbook
workbook = new XSSFWorkbook(fileStream);
}
else if (fileNames[j].IndexOf(".xls") > 0)
{
//xls数据读入workbook
workbook = new HSSFWorkbook(fileStream);
}就是不成功,求救啊,大佬们
我是个学土木的
这几天要弄死我了
分数都被坑人的CSDN坑光了,大佬们见谅
...全文
相关推荐
时、分、秒计时器设计
1.1.1定时器/计数器 定时器/计数器简称定时器,其主要用于产生各种事件间隔、记录外部脉冲与事件的数量等,是微机中最常用、最基本的部件之一。89C51单片机有2个16位的定时器/计数器0和定时器1。T0由2个定时器TH0和TL0构成,T1则由TH1和TL1构成,作为定时器时,每个机器周期定时寄存器自动加1,所以定时器也可以看成是计量机器周期的计数器。 1.1.2中断系统 当中央处理器正在执行某程序时,由于某种原因,外界向CPU发出暂停目前工作去处理更重要事件的请求,程序被打断;CPU响应该请求并转入相应的处理程序,处理程序完成以后,再返回原来程序被打断的位置,继续原来的工作,这一过程叫做中断。实现中断功能的部件成为中断系统。若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且满足如下3个条件时, 单片机响应此中断:
Focus Timer-crx插件
语言:English 使用Focus Timer更好地聚焦 Focus Timer简单易用。 用户界面是无缝的,可以帮助用户提高生产力。
matlab开发-questdlgtimer
matlab开发-questdlgtimer。询问计时器
从Flash和SRAM中触发中断的过程示例
本文将介绍有关从Flash和SRAM中触发中断的过程示例
nmi_timer_int.rar_interface
Interface of Maxim max8649.


