- Notifications
You must be signed in to change notification settings - Fork 279
Loading
闫驚鏵(Jinhua Yan) edited this page Jul 9, 2023 · 3 revisions
<Border Background="Red" wd:Loading.IsShow="true"> <TextBlock Text="Mask 0" VerticalAlignment="Center" HorizontalAlignment="Center"/> </Border> <Image Source="pack://application:,,,/WPFDevelopers.Samples;component/Images/Breathe/0.jpg" wd:Loading.LoadingType="Normal" wd:Loading.IsShow="{Binding ElementName=MyCheckBox,Path=IsChecked}"/>1)Add Loading
<Button Name="btnLoadingTask" Content="LoadingTask" Click="LoadingTask_Click" Style="{DynamicResource SuccessPrimaryButton}" Margin="10,0"/> <Button Name="btnLoading" Click="BtnLoading_Click" Content="AddLoading" wd:Loading.LoadingType="Normal" Style="{DynamicResource WarningPrimaryButton}"/> <Button Name="btnOffTask" Click="BtnOffTask_Click" Margin="10,0" Content="Off Task" Style="{DynamicResource DangerPrimaryButton}"/>2)CSharp processing task events
private void BtnOffTask_Click(object sender, RoutedEventArgs e) { if (tokenSource == null) return; tokenSource.Cancel(); Loading.SetIsShow(btnLoadingTask, false); } private CancellationTokenSource tokenSource; /// <summary> /// 此处演示关闭loading停止任务 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LoadingTask_Click(object sender, RoutedEventArgs e) { tokenSource = new CancellationTokenSource(); var cancellationToken = tokenSource.Token; var task = new Task(() => { for (int i = 0; i < 10; i++) { //这里做自己的事情 if (tokenSource.IsCancellationRequested) return; Thread.Sleep(1000); } }, cancellationToken); task.ContinueWith(previousTask => { if (tokenSource.IsCancellationRequested) return; Loading.SetIsShow(btnLoadingTask, false); }, TaskScheduler.FromCurrentSynchronizationContext()); Loading.SetIsShow(btnLoadingTask, true); task.Start(); } private void BtnLoading_Click(object sender, RoutedEventArgs e) { var task = new Task(() => { Thread.Sleep(5000); }); task.ContinueWith(previousTask => { Loading.SetIsShow(btnLoading, false); }, TaskScheduler.FromCurrentSynchronizationContext()); Loading.SetIsShow(btnLoading, true); task.Start(); }