WPF使用多线程更新UI界面 涉及资源访问需要使用委托处理

原创 2013年03月18日 12:06:14

界面控件定义:

 

 <Image   VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Name="ImgCard2"> </Image>

 

 

线程中调用的方法:

  

protected void SetCardInfo(PersonMod personObj)
  {
            try
            {
             string imagePath = @personObj.ImageUrl;

            object[] dd = { imagePath };                

            getImgCardHandler = new GetImgCard(ChangeImg);


            this.ImgCard2.Dispatcher.Invoke(getImgCardHandler, dd);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            } 

}

委托定义:

 

 private delegate void GetImgCard(string imgurl);

        GetImgCard getImgCardHandler;

        private object lockimg=new object();


 

赋值:

 

private void ChangeImg(string imgurl)
        {
            lock (lockimg)
            {
                BitmapImage images = new BitmapImage(new Uri(imgurl, UriKind.Absolute));
                ImgCard2.Source = images;
            }
        }


 

WPF通过委托跨页面修改界面控件,并传值原理完全解析

网上有很多讲WPF修改控件的,但是大部分都只是代码占据了很大的篇幅,没有详细讲解过程。所以有了我这篇文章。我希望每一个看到这篇文章的朋友都可以看懂,另外不要被太长的标题吓到。 通过委托跨页面修改控...
  • loongsking
  • loongsking
  • 2017年01月04日 17:19
  • 1684

C# 委托 回调 操作UI主线程 学习笔记

本篇相当于是对前面两篇博的一个简单总结,相当于为c#开发桌面程序有了一个多线程的应用方案。涉及了委托传参,回调委托,跨线程等。下面先直接上代码: 这段代码实现了,点Start按钮,开始更新进度条,当...
  • baidu_31981559
  • baidu_31981559
  • 2016年05月27日 17:09
  • 2949

WPF异步更新UI的两种方法

首先强调一点:异步更新UI实际上就是新开一个线程,执行耗时的任务,但是UI上的东西又不能被其他线程访问,所以非UI线程分析UI的那几条代码用一种特殊的方法来执行,从而实现既可以将耗时的操作放在其他线程...
  • hxfhq1314
  • hxfhq1314
  • 2016年09月24日 16:15
  • 4880

解决卡顿——在WPF中使用多线程更新UI

 解决卡顿——在WPF中使用多线程更新UI 有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例:     public partial ...
  • amanda_zhang2010
  • amanda_zhang2010
  • 2017年04月01日 17:51
  • 891

<转载>拒绝卡顿——在WPF中使用多线程更新UI

有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例:     public partial class MainWindow : Window     ...
  • qq_30406263
  • qq_30406263
  • 2016年02月19日 15:27
  • 303

多线程异步处理:AsyncTask异步更新UI界面 android开发教程

AsyncTask的内部实现是一个线程池,每个后台任务会 提交到线程池中的线程执行,然后使用Thread+Handler的方式调用回调函数。   AsyncTask抽象出后台线程运行的五个...
  • leansmall
  • leansmall
  • 2014年07月10日 14:13
  • 719

WPF多线程UI更新——两种方法

WPF多线程UI更新——两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有...
  • u010178308
  • u010178308
  • 2017年04月23日 22:15
  • 361

浅析.Net 在 winform及wpf中涉及界面交互的多线程类的封装

我们在开发客户端程序时,经常要用到多线程 而我们知道 , .Net 中从线程安全的考虑,对控件改变的调用要通过Invoke, beginvoke 来进行,这就涉及怎么进行工作线程与界面的互操作...
  • xnlm2005
  • xnlm2005
  • 2012年01月16日 22:36
  • 416

WPF多线程UI更新——两种方法

WPF多线程UI更新——两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有...
  • u012546338
  • u012546338
  • 2017年04月06日 16:31
  • 990

WPF多线程UI更新

前言   在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象。)这是很常见的一个错...
  • u011625411
  • u011625411
  • 2014年05月28日 16:47
  • 448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF使用多线程更新UI界面 涉及资源访问需要使用委托处理
举报原因:
原因补充:

(最多只允许输入30个字)