考虑一个计时器,它将在WPF应用程序中的Clicked事件上触发,如此,
private async void Button_Click(object sender, RoutedEventArgs e)
{
Timer t = new Timer(DoingWorkOnUI,null,0,5000);
//Also doing long execution time job here. in another thread
}
基本上问题是,如果用户关闭应用程序,我的计时器仍然在运行并且永远不会消失导致任务被取消错误。我想把它放在他的回调中,但我无法弄清楚我会怎么做。
这是我的尝试,我可能完全错了,但我可以很好地抓住取消,我只是找不到如何处理计时器的解决方案。
private void DoingWorkOnUI(object state) {
cts = new CancellationTokenSource();
var token = cts.Token;
try
{
token.ThrowIfCancellationRequested();
this.Dispatcher.Invoke((Action)(() =>
{
\\Doing work on UI
}));
}
catch (OperationCanceledException)
{
//Dispose Timer here ???
}
finally {
//Disposing token
cts.Dispose();
}
}
答案 0 :(得分:0)
您可以处理窗口的<ul class="flex-container wrap-reverse">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li> </li>
<li></li>
<div class="bigbrick">Big Brick</div>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
事件来处理计时器。
由于您要在班级中创建Closing
字段,因此您还应该实施dispose pattern以应对最佳做法指南:
IDisposable