WPF解决方案------调用线程无法访问此对象,因为另一个线程拥有该对象

简介: WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案在这里以播放图片为例进行说明,代码如下: void _Timer_Elapsed(object sender, ElapsedEventArgs e) { this.

WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案

在这里以播放图片为例进行说明,代码如下:

 void _Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            this.image.Dispatcher.Invoke(
                   new Action(
                        delegate
                        {
                            if (_CurrentIndex == _ImageFiles.Length - 1)
                            {
                                _CurrentIndex = 0;
                            }
                            else
                            {
                                _CurrentIndex++;
                            }
                            _CurrentImage = _ImageFiles[_CurrentIndex];
                            BitmapImage imgSource = new BitmapImage();
                            imgSource.BeginInit();
                            imgSource.UriSource = new Uri(_CurrentImage);
                            imgSource.EndInit();
                            image.Source = imgSource;
                        }
                   )
             );
            
        }

如果直接在计时器里面设置 image.Source = imgSource,那么系统会提示“调用线程无法访问此对象,因为另一个线程拥有该对象。”,因此需要使用 this.image.Dispatcher.Invoke(),这样就能正常播放图片了!

 

参考链接:

https://blog.csdn.net/cselmu9/article/details/8274556

 

目录
相关文章
|
2月前
|
安全 Java 调度
多线程编程的挑战与解决方案
多线程编程的挑战与解决方案
|
1月前
|
缓存 安全 Java
Java中的线程安全问题及解决方案
Java中的线程安全问题及解决方案
|
23天前
|
存储 缓存 算法
同时使用线程本地变量以及对象缓存的问题
【7月更文挑战第15天】同时使用线程本地变量和对象缓存需小心处理以避免数据不一致、竞争条件及内存泄漏等问题。线程本地变量使各线程拥有独立存储,但若与对象缓存关联,可能导致多线程环境下访问旧数据。缺乏同步机制时,多线程并发修改缓存中的共享对象还会引起数据混乱。此外,若线程结束时未释放对象引用,可能导致内存泄漏。例如,在Web服务器场景下,若一更新缓存而另一线程仍获取旧数据,则可能返回错误信息;在图像处理应用中,若多线程无序修改算法对象则可能产生错误处理结果。因此,需确保数据一致性、避免竞争条件并妥善管理内存。
|
2月前
|
安全 Java
Java多线程编程实践中的常见问题与解决方案
Java多线程编程实践中的常见问题与解决方案
|
1月前
|
安全 Java 调度
多线程编程的挑战与解决方案
多线程编程的挑战与解决方案
|
1月前
|
安全 Java 开发者
Java多线程编程实践中的常见问题与解决方案
Java多线程编程实践中的常见问题与解决方案
|
1月前
|
设计模式 存储 缓存
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
Java面试题:结合建造者模式与内存优化,设计一个可扩展的高性能对象创建框架?利用多线程工具类与并发框架,实现一个高并发的分布式任务调度系统?设计一个高性能的实时事件通知系统
33 0
|
1月前
|
设计模式 安全 Java
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
55 0
|
1月前
|
缓存 安全 Java
Java中的线程安全问题及解决方案
Java中的线程安全问题及解决方案
|
1月前
|
安全 Java 开发者
Java并发编程中的线程安全问题及解决方案探讨
在Java编程中,特别是在并发编程领域,线程安全问题是开发过程中常见且关键的挑战。本文将深入探讨Java中的线程安全性,分析常见的线程安全问题,并介绍相应的解决方案,帮助开发者更好地理解和应对并发环境下的挑战。【7月更文挑战第3天】