当前位置:  开发笔记 > 编程语言 > 正文

异步无限循环

如何解决《异步无限循环》经验,为你挑选了1个好方法。

我正在编写一个C#软件,它有一些功能,可以在5秒内在我的服务器5上签到(他们发送http请求,但对我的问题无关紧要).这是代码:

    log();

    while (true)
    {

        alive(); // this sends an http request to my server
        Thread.Sleep(5000); // sleep for 5 seconds avoiding computer overcharge
    }

    MessageBox.Show("after infinite loop"); // this is never executed but i pretend to do so

所以,我的问题是:我得到了一个无限循环,在那个无限循环之后我想写另一个无限循环,它以异步方式运行并且每100毫秒执行一次.当然"那个东西"我不能在现有的循环中写它,因为该循环在5秒内执行5.我需要编写很多像这样的无限循环,每个循环都是以不同的时间独立于另一个(或异步)执行的.

我搜索了很多,我的结论是异步编写每个循环.我的问题是:怎么做?我找到的每个代码对我来说都是完全不可理解的.我根本无法理解他们.所以,如果你有比async无限循环更好的选择(我认为这是最好的选择),你可以谈论它,否则我需要一些帮助编码这个异步无限循环...

抱歉我的英语不好,提前谢谢



1> usr..:
var loop1Task = Task.Run(async () => {
 while (true) {
  await Task.Delay(5000);
 }
});

var loop2Task = Task.Run(async () => {
 while (true) {
  await Task.Delay(100);
 }
});

现在你有两个循环.您可以向他们添加代码.


如果您需要退出这些循环,您也可以使用取消令牌(并将它们传递给延迟调用以启动).
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有