async-await - 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 写入标签。不能等待
当我将上面的代码写到定时器时,它总是启动和胡说八道。我想睡觉而不冻结表格。我怎样才能做到这一点?
解决方案
我不确定为什么这不起作用,但可能有很多原因。您可能会延迟错误的线程/任务(我在 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;
}
推荐阅读
- unity3d - 有没有办法解决在unity2d中构建后似乎损坏的png文件?
- c# - 使用实体框架迁移迁移数据
- javascript - 使用 React 和 Redux Hooks,为什么我的操作没有触发?
- node.js - Trying to run Signalr client on the server side NodeJS
- java - 用于图像上传/显示的文件系统替代方案
- python - 在 Python 中将 OptionMenu() 下拉菜单中的数据插入 SQLite 数据库
- android - How to overwrite theme of Material App while doing Navigator.push to a new scaffold?
- java - Java HTTP/HTTPS 代理服务器
- mysql - 如何从另一个表中获取值并将结果插入另一个查询
- python - 使用 Bottle 在 HTML 中显示 Python 变量