C# 中一个可取消的延时操作

本人开发cocos creator 开发游戏比较多,进来使用C#总是觉得延时操作怎么处理。不能每个地方都用定时器来处理吧。

经过查一些资料发现,C#中是有这些功能的。简单做了一个demo

  1. private Thread m_th = null;
  2. private CancellationTokenSource m_cts = new CancellationTokenSource(2000);
  3. void openDialog()
  4. {
  5. //this.dialog.ShowDialog(nameof(AlertControl), null, null, nameof(AlertWindow)) ;
  6. //this.dialog.ShowDialog(nameof(AlertControl));
  7. if (m_th == null)
  8. {
  9. m_th = new Thread(new ThreadStart(checkWork));
  10. m_th.IsBackground = true;
  11. m_th.Start();
  12. }
  13. else
  14. {
  15. m_cts.Cancel();
  16. Console.WriteLine("取消任务");
  17. }
  18. }
  19. private async void checkWork()
  20. {
  21. try
  22. {
  23. Console.WriteLine("start");
  24. await Task.Delay(1000 * 5,m_cts.Token);
  25. Console.WriteLine("end");
  26. }
  27. catch (OperationCanceledException ex)
  28. {
  29. Console.WriteLine("Cancelled ======= ");
  30. }
  31. }

以上示例就能够执行一个延时操作,同时能够,随时取消。

2024-08-06 22:06:50  user 阅读(40) 评论(0) 标签:C#,延时操作,取消 分类:C#