如果我Threading.Timer.Change()连续两次调用,那么线程何时会运行?
例如:
myTimer.Change(5000, Timeout.Infinite);
// Only 2 seconds pass.
myTimer.Change(5000, Timeout.Infinite);
Run Code Online (Sandbox Code Playgroud)
在此之后,线程将在3秒或5秒内运行吗?
我希望答案是后者,每次调用都会重置计时器Change().如果没有,我需要找到解决方法.
我正在使用a System.Timers.Timer,我OnStart在ac #windows服务的方法中有如下代码.
timer = new Timer();
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
timer.Interval = 3600000;
timer.Start();
Run Code Online (Sandbox Code Playgroud)
这导致代码输入timer_Elapsed从我启动服务后的一小时开始每小时执行一次.有没有办法让它在我启动服务时执行,然后每小时执行一次?
调用的方法timer_Elapsed运行时间太长,无法直接调用它OnStart.
我想澄清一下有关TimerTask的内容.如果您有以下代码:
timer.schedule(task, 60000);
Run Code Online (Sandbox Code Playgroud)
如果任务计划在接下来的1分钟内运行,那么任务对象是否已在执行?
因为在我的代码中某处我调用了task.cancel()但似乎调用并没有阻止
要执行的任务.我甚至记录了来自调用的返回值,它返回false.
当我阅读取消方法的文档时,我想到了我的问题:
取消TimerTask并将其从Timer的队列中删除.通常,如果调用没有阻止TimerTask至少运行一次,则返回false.后续调用无效.如果调用阻止了计划执行,则返回true,否则返回false.
我相信我在1分钟的延迟之前打电话给cancel().但是如何取消返回false,
是[任务]已经执行了吗?
希望你能给我提供线索/提示甚至解释.谢谢!
基本上当我们应用一些间隔即5秒时我们必须等待它.
是否可以立即应用间隔和执行定时器,不等待5秒?(我的意思是间隔时间).
任何线索?
谢谢!!
public partial class MainWindow : Window
{
DispatcherTimer timer = new DispatcherTimer();
public MainWindow()
{
InitializeComponent();
timer.Tick += new EventHandler(timer_Tick);
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void timer_Tick(object sender, EventArgs e)
{
MessageBox.Show("!!!");
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
timer.Interval = new TimeSpan(0, 0, 5);
timer.Start();
}
}
Run Code Online (Sandbox Code Playgroud) 当使用add_timerAPI 创建的计时器到期并且计时器结构分配的功能运行时,它在什么上下文中运行?它是中断上下文还是某些内核进程上下文?
我想在GCD块中创建一个计时器(每2秒触发一次并调用一个方法)将其用作后台任务.但是,我认为计时器永远不会发火.这是我的代码:
- (void)startMessaging
{
BOOL queue = YES;
dispatch_queue_t _queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t timerSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0, _queue);
dispatch_source_set_timer(timerSource, dispatch_walltime(NULL, 0), 2ull * NSEC_PER_SEC,1ull * NSEC_PER_SEC );
dispatch_source_set_event_handler(timerSource, ^{
if (queue) {
[self observeNewMsgs];
}
});
dispatch_resume(timerSource);
}
- (void)observeNewMsgs
{
NSLog(@"JUST TO TEST");
// Staff code...
}
Run Code Online (Sandbox Code Playgroud)
那么这有什么问题呢?我怎样才能解决这个问题?
我正在使用Timer from Timers命名空间.当PC进入睡眠状态或休眠状态时,计时器会发生什么?
我的计时器设置为6小时延迟.
在这些情况下会发生什么.
1)定时器从0小时开始,立即进入休眠/休眠状态.然后PC在第5小时醒来.我的计时器会在接下来的1小时后或接下来的6小时后点火吗?
2)定时器从0小时开始,立即进入睡眠/休眠状态.然后PC在第7小时醒来.一旦PC唤醒,我的计时器会立即开机吗?或者它会"错过"一次并在接下来的5小时内开火?从PC唤醒时间或之前的"错过"事件开始计算直到下一个事件?
到目前为止,我发现的最佳解决方案是使用该sleep()功能.我想在计时器到期事件发生时运行我自己的回调函数.是否有任何事件驱动的方式去做?
from time import sleep
# Sleep for a minute
time.sleep(60)
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试为我的精灵套件游戏实现一个计时器,但我没有让它工作.计时器的初始值始终保持不变.
我假设我需要以某种方式/某处更新标签,但我不知道如何和在哪里:?我不明白这一点.有任何想法吗?
这是我的GameScene类中的代码
let levelTimerLabel = SKLabelNode(fontNamed: "Chalkduster")
var levelTimerValue: Int = 500
var levelTimer = NSTimer()
func startLevelTimer() {
levelTimerLabel.fontColor = SKColor.blackColor()
levelTimerLabel.fontSize = 40
levelTimerLabel.position = CGPoint(x: size.width/2, y: size.height/2 + 350)
addChild(levelTimerLabel)
levelTimer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("levelCountdown"), userInfo: nil, repeats: true)
levelTimerLabel.text = String(levelTimerValue)
}
func levelCountdown(){
levelTimerValue--
}
Run Code Online (Sandbox Code Playgroud) 我想在响应原生应用程序(如时钟)中显示当前时间(MM/DD/YY hh:mm:ss),并且每秒都获得更新,我尝试使用新的Date()并将其设置为状态,但是时间不要除非我刷新页面,否则不会更新.我也尝试在render()中使用setInterval函数,它确实有更新,但它对CPU来说很昂贵.有没有一个很好的方法来实现这个功能?
state = {
curTime: null,
}
render(){
setInterval(function(){this.setState({curTime: new Date().toLocaleString()});}.bind(this), 1000);
return (
<View>
<Text style={headerStyle.marginBottom15}>Date: {this.state.curTime}</Text>
</View>
);
}
Run Code Online (Sandbox Code Playgroud) timer ×10
c# ×4
.net ×3
clock ×1
ios ×1
java ×1
kernel ×1
linux-kernel ×1
objective-c ×1
python ×1
react-native ×1
reactjs ×1
sleep ×1
sprite-kit ×1
swift ×1
timertask ×1