首页 > 解决方案 > c#任务不等待延迟定时器

问题描述

我正在使用等待任务延迟。我想通过举个例子来理解这个问题:

private async void timer2_Tick(object sender, EventArgs e)
    {
        await Task.Delay(5000);
        label1.Text = "1";
        await Task.Delay(5000);
        label1.Text = "2";
        await Task.Delay(5000);
    }

定时器内部:1000 问题:总是将 1 和 2 写入标签。不能等待

当我将上面的代码写到定时器时,它总是启动和胡说八道。我想睡觉而不冻结表格。我怎样才能做到这一点?

标签: async-awaittask

解决方案


我不确定为什么这不起作用,但可能有很多原因。您可能会延迟错误的线程/任务(我在 Java 中遇到过这个问题)?我可以问一下这段代码是否就地工作,以便我们可以获得有关该问题的更多信息?如果这可行,那么它应该确认问题是任务或线程问题。许多人需要稍微修改它并根据需要添加断点。

        DateTime begin = DateTime.Now;
        DateTime firstDelay = begin.AddSeconds(5);
        DateTime secondDelay = begin.AddSeconds(10);
        DateTime thirdDelay = begin.AddSeconds(15);
        while (begin <= firstDelay)
        {
            begin = DateTime.Now;
        }
        label1.text = "1";
        while (begin <= secondDelay)
        {
            begin = DateTime.Now;                
        }
        label1.text = "2";
        while (begin <= thirdDelay)
        {
            begin = DateTime.Now;
        }

推荐阅读