c# - 异步无限循环

标签 c# loops asynchronous infinite

我正在编写一个 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 次。我必须编写很多这样的无限循环,每个循环都在不同的时间独立于另一个(或异步)执行。

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

对不起我的英语不好, 提前致谢

最佳答案

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

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

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

关于c# - 异步无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693229/

相关文章:

c# - 不会等待从 UnhandledException 处理程序调用的异步方法

java - 嵌套的 "For"循环 java - 如何初始化变量 "i"和 "j"?

javascript - 异步获取数据,将结果聚合到一个对象。默认情况下,对象是否被 javascript 锁定?

asynchronous - 预期为 `async` block ,发现了不同的 `async` block

c# - 线程的异步委托(delegate)

c# - MVC6 自定义 IModelBinder,Beta8 变了?

c# - 具有父空值的变量解析

c# - 尝试更新工作项时出现 TFS 错误 - 您必须在请求正文中传递有效的补丁文档

java - 验证字符串(PPS 编号)

loops - rust借阅检查看起来很聪明,它可以检查和平整循环的读写。但是我该如何绕过呢?