110,535
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 设置休眠时间
/// </summary>
/// <param name="day">天数</param>
/// <param name="count">次数</param>
private static void setSleepTime(int day, int count)
{
int minCount = day*24*60; //day天总共分钟数
int perMin = minCount/count; //时间间隔xx分钟
int days = perMin / 1440; //天数
int hours = (perMin - days * 1440) / 60; //小时数
int mins = perMin - days*1440 - hours*60; //分钟数
sleepTime = new TimeSpan(days, hours, mins, 0);
}
[/quote]
一看就知道你的SleepTime等于0,他还能停下来吗?
你为什么要搞的这么复杂, new TimeSpan(0,0,15);不就完事了吗?
你自己断点看一下,是不是0,[/quote]
不好意思 设计的是精确到分钟 所以我的测试是错误的 是00 现在按你这个方法OK了 谢谢[/quote]
记得给分就成。哈哈。
/// <summary>
/// 设置休眠时间
/// </summary>
/// <param name="day">天数</param>
/// <param name="count">次数</param>
private static void setSleepTime(int day, int count)
{
int minCount = day*24*60; //day天总共分钟数
int perMin = minCount/count; //时间间隔xx分钟
int days = perMin / 1440; //天数
int hours = (perMin - days * 1440) / 60; //小时数
int mins = perMin - days*1440 - hours*60; //分钟数
sleepTime = new TimeSpan(days, hours, mins, 0);
}
[/quote]
一看就知道你的SleepTime等于0,他还能停下来吗?
你为什么要搞的这么复杂, new TimeSpan(0,0,15);不就完事了吗?
你自己断点看一下,是不是0,[/quote]
明天把其他代码整理下 效果应该可以实现
/// <summary>
/// 设置休眠时间
/// </summary>
/// <param name="day">天数</param>
/// <param name="count">次数</param>
private static void setSleepTime(int day, int count)
{
int minCount = day*24*60; //day天总共分钟数
int perMin = minCount/count; //时间间隔xx分钟
int days = perMin / 1440; //天数
int hours = (perMin - days * 1440) / 60; //小时数
int mins = perMin - days*1440 - hours*60; //分钟数
sleepTime = new TimeSpan(days, hours, mins, 0);
}
[/quote]
一看就知道你的SleepTime等于0,他还能停下来吗?
你为什么要搞的这么复杂, new TimeSpan(0,0,15);不就完事了吗?
你自己断点看一下,是不是0,[/quote]
不好意思 设计的是精确到分钟 所以我的测试是错误的 是00 现在按你这个方法OK了 谢谢
/// <summary>
/// 设置休眠时间
/// </summary>
/// <param name="day">天数</param>
/// <param name="count">次数</param>
private static void setSleepTime(int day, int count)
{
int minCount = day*24*60; //day天总共分钟数
int perMin = minCount/count; //时间间隔xx分钟
int days = perMin / 1440; //天数
int hours = (perMin - days * 1440) / 60; //小时数
int mins = perMin - days*1440 - hours*60; //分钟数
sleepTime = new TimeSpan(days, hours, mins, 0);
}
[/quote]
一看就知道你的SleepTime等于0,他还能停下来吗?
你为什么要搞的这么复杂, new TimeSpan(0,0,15);不就完事了吗?
你自己断点看一下,是不是0,
/// <summary>
/// 设置休眠时间
/// </summary>
/// <param name="day">天数</param>
/// <param name="count">次数</param>
private static void setSleepTime(int day, int count)
{
int minCount = day*24*60; //day天总共分钟数
int perMin = minCount/count; //时间间隔xx分钟
int days = perMin / 1440; //天数
int hours = (perMin - days * 1440) / 60; //小时数
int mins = perMin - days*1440 - hours*60; //分钟数
sleepTime = new TimeSpan(days, hours, mins, 0);
}
while (true)
{
doSth();
setSleepTime(1, 5760);
handler.WaitOne(sleepTime, false);
}
线程还是一直在跑的,没有休眠
EventWaitHandle handler = new EventWaitHandle(false, EventResetMode.AutoReset);
线程的函数a
void a()
{
......其它代码
AMethod();
handler.WaitOne(休眠的时间);
}
这样的话,你想线程快速的醒来,只要Handler.Set()一下就Ok了,this.Completed += (obj, e) => AMethod();
var timer = System.Timers.Timer(6 * 1000);
timer.Elapsed += (obj, e) =>
{
AMethod();
//当执行完以后触发, 参数或者状态你可以放在e里面
if(this.Completed != null) this.Completed(...);
};
timer.Start();
[/quote]
这个考虑下,如果线程不行的话 试下这个this.Completed += (obj, e) => AMethod();
var timer = System.Timers.Timer(6 * 1000);
timer.Elapsed += (obj, e) =>
{
AMethod();
//当执行完以后触发, 参数或者状态你可以放在e里面
if(this.Completed != null) this.Completed(...);
};
timer.Start();