C#线程安全的Buffer,和字典

这篇博客探讨了在多线程环境下如何确保数据操作的安全性。通过使用`ConcurrentQueue`实现线程安全的数据读取和存储,以及在大量数据时使用`Dictionary`并采用标记方式处理删除操作以维持线程安全。同时,介绍了字典遍历的多种方式,并提到了在WPF中使用`ObservableCollection`来实现实时数据更新的前端绑定。
摘要由CSDN通过智能技术生成

线程安全Buffer

public ConcurrentQueue<Ai> concurrentQueue = new ConcurrentQueue<Ai>();
//取出数据
Ai ai;
while (concurrentQueue.TryDequeue(out ai))
{
    //进行操作
}
//存入数据
concurrentQueue.Enqueue(ai);

字典,当数据量特别大的时候,性能很强,为了线程安全,删除时不是真删除

Dictionary<int, ProductionDataCache> Datas = new Dictionary<int, ProductionDataCache>();
//添加修改数据
ProductionDataCache productionDataCache;
if (Datas.TryGetValue(siteInfo.SiteId, out productionDataCache))
{
    //存在修改
}
else
{
    //不存在添加
    Datas.Add(productionData.SiteId, productionData);
}
//删除数据,为了线程安全,不直接删除数据,直接对数据进行标记
ProductionDataCache productionDataCache;
if (Datas.TryGetValue(siteId, out productionDataCache))
{
    productionDataCache.IsDelete = true;
}
//更新数据
ProductionDataCache productionDataCache;
//需要有数据才可以数据
if (Datas.TryGetValue(siteId, out productionDataCache))
{
    Datas[key] = newProductionDataCache;
}
else
{
    Datas.Add(key, newProductionDataCache);
}

字典遍历

Dictionary<string, int> list = new Dictionary<string, int>();
list.Add("d", 1);
//3.0以上版本
foreach (var item in list)
{
   Console.WriteLine(item.Key + item.Value);
}
//KeyValuePair<T,K>
foreach (KeyValuePair<string, int> kv in list)
{
   Console.WriteLine(kv.Key + kv.Value);
}
//通过键的集合取
foreach (string key in list.Keys)
{
   Console.WriteLine(key + list[key]);
}
//直接取值
foreach (int val in list.Values)
{
   Console.WriteLine(val);
}

 可观察到的集合,WPF前后台绑定时,要想数据更改前台自动更改,需要使用ObservableCollection

数据更新前台自动更新
ObservableCollection<ProductionData> 
set { _DisplayId = value; NotifyOfPropertyChange(() => DisplayId); 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开花落的个人博客

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值