求教Timer用法 我现在的问题是, 程序边执行test,将test继续往下走,然后timer也在走。我只想将timer走完 再继续将test 后面的其他方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 AutoMeterTimeTimer = new System.Timers.Timer(); AutoMeterTimeTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoMeterTimeTimer_Elapsed); AutoMeterTimeTimer.Interval = 1000; AutoMeterTimeTimer.Start();while (AutoMeterTimeTimer.Enabled){ Application.DoEvents(); Thread.Sleep(100);}后面的代码 Task.Factory.StartNew(() => { //TODO 循环+后续方法 });以上相当于新起了一个异步线程,不会阻塞UI至于await async 我想你用不到了 taskhttp://msdn.microsoft.com/zh-cn/library/system.threading.tasks.task(v=vs.110).aspx class Test { System.Timers.Timer AutoMeterTimeTimer; DateTime startTime = DateTime.Now; public void test() { //自动抄表定时器 AutoMeterTimeTimer = new System.Timers.Timer(); AutoMeterTimeTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoMeterTimeTimer_Elapsed); AutoMeterTimeTimer.Interval = 10000; AutoMeterTimeTimer.Start(); while (AutoMeterTimeTimer.Enabled) { Application.DoEvents(); Thread.Sleep(1000); } } //最终抄表结果 private void AutoRecordReport() { } void AutoMeterTimeTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if ((DateTime.Now - startTime).TotalMinutes < 2) { AutoRecordReport(); } else { AutoMeterTimeTimer.Close(); } } } 资源文件中包含的资源 为何程序中找不到? 关于控制窗体显示的问题 c#命名空间 关于c#操作Excel的问题(急) GRIDVIEW删除问题(请高手指教) 问一个NHibernate的查询的问题 access中的ole对象如何绑定到datagrid中?在线等待、给分 中间语言MSIL对学好c#重不重要 收集C#WinForm控件,不够分再给(100) 关于DataTable的索引和DataGrid的行号的问题 【C#中】引用、句柄、指针究竟有什么区别? 这么写的好处
AutoMeterTimeTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoMeterTimeTimer_Elapsed);
AutoMeterTimeTimer.Interval = 1000;
AutoMeterTimeTimer.Start();
while (AutoMeterTimeTimer.Enabled)
{
Application.DoEvents();
Thread.Sleep(100);
}
后面的代码
{
//TODO 循环+后续方法
});以上相当于新起了一个异步线程,不会阻塞UI至于await async 我想你用不到了 task
http://msdn.microsoft.com/zh-cn/library/system.threading.tasks.task(v=vs.110).aspx
class Test
{ System.Timers.Timer AutoMeterTimeTimer;
DateTime startTime = DateTime.Now;
public void test()
{
//自动抄表定时器
AutoMeterTimeTimer = new System.Timers.Timer();
AutoMeterTimeTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoMeterTimeTimer_Elapsed);
AutoMeterTimeTimer.Interval = 10000;
AutoMeterTimeTimer.Start();
while (AutoMeterTimeTimer.Enabled)
{
Application.DoEvents();
Thread.Sleep(1000);
}
} //最终抄表结果
private void AutoRecordReport()
{ } void AutoMeterTimeTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if ((DateTime.Now - startTime).TotalMinutes < 2)
{
AutoRecordReport();
}
else
{
AutoMeterTimeTimer.Close();
}
}
}