c# - c#: 如何做额外的延迟
问题描述
这是我的代码:
using System;
using System.Threading;
using System.Threading.Tasks;
using Gtk;
public partial class MainWindow : Gtk.Window
{
async Task Do()
{
var i = textview.Buffer.GetIterAtLine(0);
await Task.Delay(1000);
textview.Buffer.Insert(ref i, "Hello, world!\n");
}
async void Main()
{
await Do();
await Do();
}
public MainWindow() : base(Gtk.WindowType.Toplevel)
{
Build();
Main();
}
protected void OnPauseButtonClicked(object sender, EventArgs e)
{
Thread.Sleep(5000);
}
}
我的意图是:
如果我在第一个“你好,世界!”之前按下按钮 出现,两个“Hello, world”会在 5 秒后以 1 秒的间隔出现。
但是,真正发生了什么:
我在第一个“你好,世界!”之前按下了按钮。出现,5秒过去了,两个“Hello, world”同时出现。
解决方案是什么?
解决方案
推荐阅读
- c# - 如何清除以前的 BeginInvoke
- java - 如何从 Angular 正确地与 Servlet 通信
- r - 使用 igraph、network 或其他 R 包计算有向无环图的所有生成树
- python - 当 QRunnable 也被调用时,QWidget 不加载子元素
- swift - 文件中第二次出现字节的索引或范围
- tensorflow - TensorFlow saved_model 为不同的输入返回相同的结果
- .net - 无法使用 VB.NET 和 SSH.NET 连接到 SSH/SFTP 服务器 - 但 WinSCP 和 FileZilla 可以连接
- dependencies - Composer:为需要的包指定一个版本?
- javascript - 使用 setState() 时,如何在 React 组件中单独更新数组索引的状态而不影响整个数组本身?
- c# - 在 c# 后端调用 api 时,Angular 前端出现错误