在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的更多相关文章

  1. 对线程等待函数pthread_join二级指针参数分析

    分析之前先搞明白,这个二级指针其实在函数内部是承接了上个线程的返回值. 看man手册,发现返回值是个普通指针.人家用二级指针来承接,可能准备干大事.这个可以自己搜索一下.原因嘛,二级指针是保存了这个地 ...

  2. WPF/MVVM Quick Start Tutorial - WPF/MVVM 快速入门教程 -原文,翻译及一点自己的补充

    转载自 https://www.codeproject.com/articles/165368/wpf-mvvm-quick-start-tutorial WPF/MVVM Quick Start T ...

  3. SQL之收集SQL Server线程等待信息

    要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_ ...

  4. Java多线程系列--“基础篇”05之 线程等待与唤醒

    概要 本章,会对线程等待/唤醒方法进行介绍.涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long t ...

  5. java 多线程—— 线程等待与唤醒

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  6. WPF/MVVM 快速开始指南(译)(转)

    WPF/MVVM 快速开始指南(译) 本篇文章是Barry Lapthorn创作的,感觉写得很好,翻译一下,做个纪念.由于英文水平实在太烂,所以翻译有错或者译得不好的地方请多指正.另外由于原文是针对W ...

  7. 收集SQLServer线程等待信息

    要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_ ...

  8. SQL点滴13—收集SQLServer线程等待信息

    原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信 ...

  9. WPF 自定义 MessageBox (相对完善版)

    WPF 自定义 MessageBox (相对完善版)     基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当 ...

随机推荐

  1. MyBatis核心配置文件详解

    ------------------------siwuxie095                                     MyBatis 核心配置文件详解         1.核心 ...

  2. js Array Map and Set

    Array slice slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array: var arr = ['A', 'B', 'C', ' ...

  3. Loitor_产品(二)校准立体摄像机

    [1]Loitor VI Sensor 可以通过 ROS 自自带的双目相机标定工工具 cameracalibrator.py 来标定相机内参,详细过程http://wiki.ros.org/camer ...

  4. CentOS7下BIND配置主从服务器和缓存服务器

    系统环境:CentOS Linux release 7.4.1708 (Core)  3.10.0-693.el7.x86_64 软件版本:bind-chroot-9.9.4-51.el7_4.1.x ...

  5. Vim基础教程

    一.简介 世界上只有三种编辑器,EMACS.VIM和其它. 我们所处的时代是非常幸运的,有越来越多的编辑器,相对于古老的VIM和EMACS,它们被称为现代编辑器.我们来看看这两个古董有多大年纪了: * ...

  6. Codeforces 709C 模拟

    C. Letters Cyclic Shift time limit per test:1 second memory limit per test:256 megabytes input:stand ...

  7. ubuntu下设置DNS服务器

    当网卡通过DHCP获取IP地址时,DHCP会根据DHCP服务器配置,自动给系统分配DNS服务器地址,此时执行 ping www.baidu.com 动作,会将百度的域名在本地转换成ip地址,然后走路由 ...

  8. Laravel 日期时间处理包 Carbon 的应用

    在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单.Laravel 中默认使用的时 ...

  9. Git 初始状操作指引

    You have an empty repository To get started you will need to run these commands in your terminal. Ne ...

  10. 1.spring环境的搭建

    1.app.config <?xml version="1.0" encoding="utf-8" ?><configuration> ...