写一段代码,wpf中点击button1循环执行命令,其中先执行代码A,等待10秒,执行代码B,在等待5秒。点击button2结束循环
时间: 2024-12-22 13:22:35 浏览: 4
WPF实现进度条实时更新效果
3星 · 编辑精心推荐
在WPF中实现这种需求,你可以使用`DispatcherTimer`来控制定时器的执行,结合`Button`的`Click`事件。下面是一个简单的示例:
首先,创建一个`DispatcherTimer`实例并设置其间隔(这里以15秒为一次循环):
```xml
<Window x:Class="YourNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Button 1" Name="btn1" Click="Btn1_Click"/>
<Button Content="Button 2" Name="btn2" Click="Btn2_Click"/>
<Label Content="{x:Static System.Windows.Controls.TextBlock.ForegroundProperty}" />
</Grid>
</Window>
```
然后在后台代码中实现逻辑:
```csharp
using System;
using System.Windows;
using System.Windows.Threading;
public partial class MainWindow : Window
{
private DispatcherTimer timer;
private bool isRunning = false;
public MainWindow()
{
InitializeComponent();
timer = new DispatcherTimer();
timer.Tick += Timer_Tick;
}
private void Btn1_Click(object sender, RoutedEventArgs e)
{
if (!isRunning)
{
isRunning = true;
timer.Interval = TimeSpan.FromSeconds(15);
timer.Start();
}
}
private void Timer_Tick(object sender, EventArgs e)
{
// 代码A
Console.WriteLine("Executing Code A...");
// 暂停10秒
Task.Delay(TimeSpan.FromSeconds(10)).Wait();
// 代码B
Console.WriteLine("Executing Code B...");
// 暂停5秒
Task.Delay(TimeSpan.FromSeconds(5)).Wait();
}
private void Btn2_Click(object sender, RoutedEventArgs e)
{
isRunning = false;
timer.Stop();
}
}
```
当点击Button1时,如果计时器未运行,则开始执行,每次Tick事件触发会先执行Code A,然后暂停10秒,接着执行Code B,再暂停5秒。点击Button2时,停止计时器。
阅读全文