在继续使用C#WPF之前,让线程等待两秒钟

Del*_*ake 1 c# wpf wait

我无法在不阻止GUI的情况下使线程等待两秒钟.我所知道的最简单的等待方法是Thread.Sleep(2000);.如果您可以使用一些我不知道的定时器或其他示例,请这样做,因为我不太熟悉编码方式.

private void run_program_Click(object sender, RoutedEventArgs e)
{
    if (comboBox1.Text == "Drive forwards and back")
    {
        stop.IsEnabled = true;

        EngineA(90); //Makes EngineA drive at 90% power
        EngineB(90); //Makes EngineB drive at 90% power

        // Basicly it has to wait two seconds here

        EngineA(-90); // -90% power aka. reverse
        EngineB(-90); // -90% power

        // Also two seconds here

        EngineA(0); // Stops the engine
        EngineB(0); // Stops
        EngineC();
     }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

如果您使用的是C#5,最简单的方法是制作方法async:

private async void RunProgramClick(object sender, RoutedEventArgs e)
{
    // Reverse the logic to reduce nesting and use "early out"
    if (comboBox1.Text != "Drive forwards and back")
    {
        return;
    }

    stop.IsEnabled = true;
    EngineA(90);
    EngineB(90);

    await Task.Delay(2000);

    EngineA(-90);
    EngineB(-90);

    await Task.Delay(2000);

    EngineA(0);
    EngineB(0);
    EngineC();
}
Run Code Online (Sandbox Code Playgroud)