WPF 自定义快速实现线程等待函数FastTask

Posted 多放辣椒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 自定义快速实现线程等待函数FastTask相关的知识,希望对你有一定的参考价值。

在WPF实现

我们常常需要实现这个目标:线程里面执行复杂的任务,然后主窗体等待动画

我把我最简单的东西给包了一下,更方便使用,大家也可以方便使用

1:添加CommHelper类 FastTask方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using LoadingIndicators.WPF;
using System.Threading.Tasks;

namespace PLC_Data_Backup
{
    public class CommHelper
    {
        public static void FastTask(Action _actionDoing, Action _actionAfter=null)
        {
            ProcessControl loading = new ProcessControl();
            Task t = new Task(() =>
            {
                try
                {
                    _actionDoing();

                    Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        loading.Close();

                    }));
                    if (_actionAfter != null)
                    { _actionAfter(); }
                }
                catch (Exception ex)
                {
                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {

                        loading.Close();
                        MessageBox.Show("失败\\r\\n" + ex.ToString());//new PopupWindow().ShowThis("绘图失败");
                    }));
                }
            });
            t.Start();
            loading.ShowDialog();
            ;
        }
    }
}

FastTask(Action _actionDoing, Action _actionAfter = null)
_actionDoing是等待中做的事情,
_actionAfter是等待做完之后做的事情,如果跨线程请考虑跨线程调用

2:添加动画 dll

 

3:开始测试

 

private void Button_Click(object sender, RoutedEventArgs e)
        {
            CommHelper.FastTask(new Action(() =>
                {
                    Thread.Sleep(1000);//干复杂的事情
                }),
                new Action(()=>
                {
                    MessageBox.Show("加载完成");
                }));
        }

  

 

 


  ,方便以后简单的使用了!

 

以上是关于WPF 自定义快速实现线程等待函数FastTask的主要内容,如果未能解决你的问题,请参考以下文章

WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现

利用闭包实现自定义等待方法#yyds干货盘点#

WPF 自定义滑动ScrollViewer

[WPF] Wait for a moment.

C#中如何实现WPF调用Winform中用户自定义的控件呢?

WPF 线程开启等待动画