线程间通信的同步机制(ConcurrentQueue)

server/2024/10/19 3:26:13/

假设需要实现的功能:
创建两个线程,一个用来读取数据,一个用来更新数据。

使用 ConcurrentQueue 来存放读取到的数据,然后使用 TryTake 或者 TryDequeue 来判断队列是否有新数据,如果有则更新 UI。

private readonly ConcurrentQueue<string> _dataQueue = new ConcurrentQueue<string>();private void DataReadingThread()
{while (true){string data = ReadData();if (!_dataQueue.Contains(data)){_dataQueue.Enqueue(data);}}
}private void UIUpdateThread()
{while (true){if (_dataQueue.TryDequeue(out string newData)){Dispatcher.Invoke(() =>{// 更新UI元素// myLabel.Content = newData;});}}
}

注意:

队列的原则是先进先出
读取数据的线程是一直往队列中存放数据的,为了保证更新的数据是最新的数据,更新UI的频率需要高于读取数据的频率,否则就会出现队列堆积数据,导致UI数据更新不及时的问题。


http://www.ppmy.cn/server/103636.html

相关文章

数字图像处理【14】特征检测——Harris角点检测

在上一篇文章已经介绍了opencv特征检测中的一些必要的概念&#xff0c;介绍了什么是特征&#xff0c;什么是角点&#xff0c;这些角点特征可以做什么。今天来看看对于我们人来说很容易就识别到角点特征&#xff0c;对于计算机来说是如何识别的&#xff0c;具体的步嘴原理是怎样…

Linux 音媒体小项目练手

1.1 项目背景 该项目旨在开发一个基于 Mplayer 的视频播放器&#xff0c;支持加载指定路径下的音视频文件&#xff0c;并通过命令行界面进行播放控制。播放器支持顺序播放、随机播放、单曲循环等模式&#xff0c;用户可通过简单的按键操作进行视频播放的控制。 1.2 目标 支持…

408专业135|王道和二轮强化课的经验分享

408 进入第二轮复习阶段&#xff0c;主要任务是大量练习大题。 此时&#xff0c;不建议完整地观看强化课程&#xff0c;因为在第一轮复习中&#xff0c;你已经做了大量选择题&#xff0c;积累了丰富的经验&#xff0c;并且熟悉了题目的出题方式。然而&#xff0c;这并不意味着…

【python与java的区别-04(文件流)】

一、文件和目录的操作 1、IO流&#xff08;Stream&#xff09; 通过“流”的形式允许计算机程序使用相同的方式来访问不同的流入/流出源。Stream是从起源&#xff08;source&#xff09;到接收(sink)的有序数据。我们把输入/输出源对比成“水桶”&#xff0c;那么流就是“管道…

迈入退休生活,全职开发ue独立游戏上架steam

决定退休了。算了算睡后收入&#xff0c;也可以达到每月一万一&#xff0c;正好可以养家糊口。 既然退休了&#xff0c;那就做些想做的事情&#xff0c;别人养花养草&#xff0c;而我打算开发独立游戏上架steam。 一&#xff0c;盘点下目前的技术体系。 1&#xff0c;图形学底…

ctfshow之web29~web51

目录 web29 题解&#xff1a; web30 web31 web32&#xff08;32~36&#xff09; web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 &#xff08;42~51&#xff09; web43 web44 web45 web50 web51 web29 前瞻知识&#xff1a; isset() …

大数据量实现滚动分页-vue3+element-plus实现方式

1.背景&#xff1a;分页是处理大数据量的一种常见方式&#xff0c;一般有页码分页、滚动分页的实现方式&#xff0c;表格页面分页非常常见&#xff0c;下面是一个列表或者表格的滚动分页。 2.话不多说&#xff0c;上代码&#xff1a; &#xff08;1&#xff09;解题思路&#x…

ES的介绍和使用

全文搜索引擎 Elastic Search 第一节 引言 当系统数据量上了10亿、100亿条的时候&#xff0c;我们用什么数据库好&#xff1f;如何解决单点故障&#xff1f;如何提升检索速度&#xff1f;如何解决统计分析问题&#xff1f; 传统数据库的应对解决方案 关系型数据库 通过主从备…