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("加载完成");
                }));
        }

  


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

时间: 2024-12-30 14:47:47

WPF 自定义快速实现线程等待函数FastTask的相关文章

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

分析之前先搞明白,这个二级指针其实在函数内部是承接了上个线程的返回值. 看man手册,发现返回值是个普通指针.人家用二级指针来承接,可能准备干大事.这个可以自己搜索一下.原因嘛,二级指针是保存了这个地址.一级指针承接的话就是这个地址. 那既然二级指针保存了,我们如何访问那?开始我觉得直接来个二级指针,然后*访问算了,但是下面的东西.让你不能那么干了!其实非要那样也可以 malloc呗! 线程创建函数pthread_create的函数原型如下: int pthread_create(pthread

线程同步——内核对象实现线程同步——等待函数

1 对于内核对象实现线程同步,不得不提三点: 2 1)大多数内核对象既有触发也有未触发两个状态 3 比如:进程.线程.作业.文件流.事件.可等待的计时器.信号量.互斥量 4 2)等待函数:等待函数使线程自愿进入等待状态,直到指定的内核对象变为触发状态为止, 5 说道等待我们最喜欢不过了,因为这样不会浪费我们宝贵的CPU时间. 6 3)对于自动重置对象来说,当对象被触发时,函数会自动检测到(手动重置对象为触发是,函数也能检测到), 7 并开始执行,但是在函数会在返回之前使事件变为非触发状态. 8

WIN内核线程池函数

线程池 (本章节中例子都是用 VS2010 编译调试的) 线程池编写必须在 Windows Vista 操作系统(以及以上版本的操作系统)下,且 C++ 编译器版本至少是 VS2008 线程池的功能 以异步的方式来调用一个函数 每隔一段时间调用一个函数 当内核对象触发的时候调用一个函数 当异步 I/O 请求完成的时候调用一个函数 注意 当一个进程初始化的时候,它并没有任何与线程池的开销.但是,一旦调用了新的线程池函数,系统就会为进程相应的内核资源,其中的一些资源在进程终止之前都将一直存在.正如我

有关POSIX线程的函数

(1)创建线程函数: pthread_create(): (2)阻塞等待线程结束并回收资源函数: pthread_join(): (3)线程退出函数:pthread_exit(); (4)线程互斥锁: 初始化  pthread_mutex_init(); 上锁    pthread_mutex_lock(): 解锁    pthread_mutex_unlock(): (5)线程信号量: 初始化  sem_init():  P操作  sem_wait():   V操作  sem_post():

Delphi多线程编程(9)--认识等待函数WaitForSingleObject

转载自:万一的博客 一下子跳到等待函数 WaitForSingleObject,是因为下面的Mutex.Semaphore.Event.WaitableTimer等同步手段都要使用这个函数.不过等待函数可不止WaitForSingleObject这一个,但是它是最简单的 function WaitForSingleObject( hHandle: THandle; //要等待的对象句柄 dwMillseconds: DWORD; //等待的时间,单位是毫秒 ): DWORD; srdcall;

线程等待——CountDownLatch使用

告警性能优化过程中,遇到如下问题:1. 在数据库计算几十万个实体的KPI值的方差:2. 计算结果进行表格化处理. 这里KPI包含多个Counter的数据库函数运算(比如Decode,AVG等函数),方差也是数据库函数运算,性能比较差. 步骤1中每个实体独立计算方差,步骤2需要方差结果协同处理,所以很自然的联想到步骤1分实体多线程处理,步骤2等待步骤1所有线程完成后才开始处理.这里我们使用CountDownLatch进行线程等待,示例代码如下: package com.coshaho.thread

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

java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 java 多线程—— 线程等待与唤醒 概述 第1部分 wait(), notify(), notifyAll()等方法介绍 第2部分 wait()和notify()示例 第3部分 wait(long timeout)和notify() 第4部分 wait() 和 notifyAll() 第5部分 

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

原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_stats 这是一个系统视图,里面存储线程所遇到的所有的等待信息,具体的列如下表 列名 数据类型 说明 Wait_type Nvarchar(60) 等待类型名称 waiting_tasks_count Bigint 等待类型的等待数.该计数

Linux多线程实现及线程同步函数分析

在Linux中,多线程的本质仍是进程,它与进程的区别: 进程:独立地址空间,拥有PCB 线程:也有PCB,但没有独立的地址空间(共享) 线程的特点: 1,线程是轻量级进程,有PCB,创建线程使用的底层函数和进程一样,都是clone 2,从内核看进程和线程是一样的,都有各自不同的PCB 3,进程可以蜕变成线程 4,在LINUX中,线程是最小的执行单位,进程是最小的分配资源单位 查看指定线程的LWP号命令: ps -Lf pid 线程优点: 提高程序并发性 开销小 数据通信,共享数据方便 线程缺点: