WPF 中更新界面信息

1.Dispatcher.BeginInvoke

   int ii = 0;
            new Thread(new ParameterizedThreadStart((i) =>
            {
                while (true)
                {
                    Thread.Sleep(400);
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        ii += 1;
                        btn2.Content = ii.ToString();
                    }));
                }
            })).Start();

2.动态回调中更新进度条(1中更新界面的方式已经不能直接奏效,需要调用DoEvent()方法才能及时更新界面信息)

     private async void Button_Click(object sender, RoutedEventArgs e)
        {
            ServiceAgent.RestFullServiceRequestForFileDownload(new Uri("http://files.cnblogs.com/files/LittleFeiHu/ItcastWP7Simulator20110417.rar"), new DownloadProgressEventHandler((bytes) =>
            {
                S.StudentName = bytes.ToString();
                DoEvents();
                Thread.Sleep(200);
            }));
        }
        private DispatcherOperationCallback exitFrameCallback = new DispatcherOperationCallback(ExitFrame);
        public void DoEvents()
        {
            DispatcherFrame nestedFrame = new DispatcherFrame();
            DispatcherOperation exitOperation = Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, exitFrameCallback, nestedFrame);
            Dispatcher.PushFrame(nestedFrame);
            if (exitOperation.Status != DispatcherOperationStatus.Completed)
            {
                exitOperation.Abort();
            }
        }
        private static Object ExitFrame(Object state)
        {
            DispatcherFrame frame = state as DispatcherFrame;
            frame.Continue = false;
            return null;
        }

  

 代码下载

时间: 2024-10-09 17:20:08

WPF 中更新界面信息的相关文章

Android中Handler的使用方法——在子线程中更新界面

本文主要介绍Android的Handler的使用方法.Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列.每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Han

Android--Handler的使用方法:在子线程中更新界面

本文主要介绍Android的Handler的使用方法.Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列.每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Han

Android--Handler的用法:在子线程中更新界面

本文主要介绍Android的Handler的用法.Handler能够发送Messsage和Runnable对象到与其相关联的线程的消息队列. 每一个Handler对象与创建它的线程相关联.而且每一个Handler对象仅仅能与一个线程相关联. Handler一般有两种用途:1)运行计划任务,你能够再预定的实现运行某些任务.能够模拟定时器.2)线程间通信.在Android的应用启动时.会创建一个主线程,主线程会创建一个消息队列来处理各种消息. 当你创建子线程时,你能够再你的子线程中拿到父线程中创建的

wpf中遍历界面控件的方法

/// <summary>        /// 遍历界面中的所有控件        /// </summary>        /// <param name="uiControls"></param>        private void SetNotEditable(UIElementCollection uiControls)        {            foreach (UIElement element in u

Android技术4:Android4.4中如何更新相册信息

当你到这篇文章时,你肯定遇到了在Android4.4版本中需要使用本地相册时,无法找到最新的照片这一问题.在Android4.4以前在需要获取手机本地图片信息时,只需要发送一个广播更新相册信息,然而系统更新到4.4之后该广播无效且报错. 广播如下: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

使用Handler在子线程中更新UI

Android规定只能在主线程中更新UI,如果在子线程中更新UI 的话会提示如下错误:Only the original thread that created a view hierachy can touch its view((只有原来的线程创建一个视图层次可以触摸它的视图). 只能在主线程中更新UI的原因是:android中相关的view和控件不是线程安全的,我们必须单独做处理. 有的时候需要再子线程中实现更新UI,下面介绍使用Handler实现线程通信的特点实现在子线程中更新UI. H

Swing中耗时任务需要另起新线程,这个新线程中更新GUI的操作仍需由EDT来做(转)

最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁:Found one Java-level deadlock:============================="Thread-122":  waiting to lock monitor 0x484052e4 (object 0x1af2bb08, a com.raisecom.ems.temple

异步更新界面方法

代码中频繁出现下面描述的模式,某些操作调用服务端接口获取数据.执行复杂的数据解析,这些操作不能阻塞UI线程,必须异步执行,但通常这些操作执行完后需要对界面元素进行更新.就是这么个模式在代码中频繁出现.之前代码解决此问题的方式是使用thread,一般流程是下面这样(工作任务一般在模型中有封装,这些操作是阻塞的), 1.  首先我们必须把这些接口封装成thread要求的接口,通常使用内部类(之前我们用的是VS05版本,没有lambda) 2.  调用boost::thread 3.  执行完后Pos

CleanAOP实战系列--WPF中MVVM自动更新

CleanAOP实战系列--WPF中MVVM自动更新 作者: 立地 邮箱: [email protected] QQ: 511363759 CleanAOP介绍:https://github.com/Jarvin-Guan/CleanAOP 前言 讲起WPF,开发模式MVVM是必不可少的,使用MVVM模式以后可以在View中写界面,需要使用到的数据则使用绑定的方式写到标签中,那么控制权就放到了ViewModel中,那么有一个需求是每一个使用MVVM者都会有的,就是在后台改变ViewModel的属