C# 网络。框架 2.0 |拖延时间?
C# NET. Framework 2.0 | Make a delay?
如何让我的程序等待 1 秒然后执行某些操作?
就像在 NET 中一样。带有 Task.Delay() 的 Framework 4.8 但我使用的是 NET。我的旧 Windows 2000 笔记本电脑项目的 Framework 2.0。有什么我可以做的吗?
panel1.Visible = true;
//delay
panel2.Visible = true;
//delay
...
我看到您想让 UI 面板延迟可见。 要避免 的一件事是 UI 线程上的任何重大延迟,因为您的表单在此期间将没有响应,用户可能会认为它已崩溃。
一个好的方法是生成一个工作线程来执行此延迟操作,而不会阻塞您的 UI 线程。但是当需要将 UI 面板更改为 Visible
时,必须使用 Invoke.
将其编组回 UI 线程
这是我用来在 C# .Net Framework 2.0 中测试此答案的代码。如果你想试试,我把它贴在了 GitHub 上。
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
new Thread(makeVisibleOnDelay).Start();
}
private void makeVisibleOnDelay()
{
Thread.Sleep(1000);
Invoke((MethodInvoker)delegate { panel1.Visible = true; });
Thread.Sleep(1000);
Invoke((MethodInvoker)delegate { panel2.Visible = true; });
}
}
现在面板逐渐显示:
如何让我的程序等待 1 秒然后执行某些操作? 就像在 NET 中一样。带有 Task.Delay() 的 Framework 4.8 但我使用的是 NET。我的旧 Windows 2000 笔记本电脑项目的 Framework 2.0。有什么我可以做的吗?
panel1.Visible = true;
//delay
panel2.Visible = true;
//delay
...
我看到您想让 UI 面板延迟可见。 要避免 的一件事是 UI 线程上的任何重大延迟,因为您的表单在此期间将没有响应,用户可能会认为它已崩溃。
一个好的方法是生成一个工作线程来执行此延迟操作,而不会阻塞您的 UI 线程。但是当需要将 UI 面板更改为 Visible
时,必须使用 Invoke.
这是我用来在 C# .Net Framework 2.0 中测试此答案的代码。如果你想试试,我把它贴在了 GitHub 上。
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
new Thread(makeVisibleOnDelay).Start();
}
private void makeVisibleOnDelay()
{
Thread.Sleep(1000);
Invoke((MethodInvoker)delegate { panel1.Visible = true; });
Thread.Sleep(1000);
Invoke((MethodInvoker)delegate { panel2.Visible = true; });
}
}
现在面板逐渐显示: