如何显示带有时差的文本? (单开发 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!";
}
}
我从 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!";
}
}