如何显示带有时差的文本? (单开发 C#)

how to show text with time difference? (monodevelop c#)

我从 MonoDevelop 创建了一个 GTK# 2.0 项目,并像这样修改了 MainWindow.cs;

using System;
using System.Threading;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        Application.Quit();
        a.RetVal = true;
    }

    protected void OnButtonClicked(object sender, EventArgs e)
    {
        textview.Buffer.Text = "Hello, world!";
        Thread.Sleep(2500);
        textview.Buffer.Text += Environment.NewLine;
        textview.Buffer.Text += "Hello, world!";
    }
}

我的意图是:首先显示 "Hello, world!",2 秒半后,在下一行显示另一个 "Hello, world!"。

但是,当我按下按钮时实际发生了什么:两个 "Hello, world" 在 2 秒半之后同时显示。

那我怎样才能显示有时间差的两条线呢?

改用Task.Delay。您需要标记从 async.

调用它的方法
await Task.Delay(3000);

@峰

using System;
using System.Threading;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        Application.Quit();
        a.RetVal = true;
    }

    protected async void OnButtonClicked(object sender, EventArgs e)
    {
        textview.Buffer.Text = "Hello, world!";
        textview.Buffer.Text += Environment.NewLine;
        await Task.Delay(2500);
        textview.Buffer.Text += "Hello, world!";
    }
}