社区
C#
帖子详情
自己实现的集合类,如何防止 foreach中途退出后 当前的location位置不对?
progame
2003-04-25 02:55:56
因为线程被终止,所以foreach并未执行完
结果下次执行前我只能使用CMyClass.Reset()复位才行
有别的方法么?
...全文
71
5
打赏
收藏
自己实现的集合类,如何防止 foreach中途退出后 当前的location位置不对?
因为线程被终止,所以foreach并未执行完 结果下次执行前我只能使用CMyClass.Reset()复位才行 有别的方法么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
progame
2003-04-25
打赏
举报
回复
o
timmy3310
2003-04-25
打赏
举报
回复
比如:
internal class SomeEnumerator
{
private YourClass _data;
public SomeEunmerator( YourClass obj )
{
_data = obj;
}
public object Current
{
// 得到集合当前的元素
get
{
CFileItem item = (CFileItem)_data.m_Files[this.m_Location - 1];
return (object)item;
}
}
public void Reset()
{
_data.m_Location = 0;
}
public bool MoveNext()
{
_data.m_Location++;
if (_data.m_Location > _data.m_Files.Count)
{
_data.m_Location = 0;
return false;
}
else
return true;
}
}
timmy3310
2003-04-25
打赏
举报
回复
你可以写一个内部类来帮你实现IEnumerator,而在:
public IEnumerator GetEnumerator()
{
return new SomeEnumerator(this); //每次foreach都返回一个新实例
}
然后在SomeEnumerator实现IEnumerator的方法,也就是MoveNext、Reset等,在GetEnumerator里面每次都返回一个实例的话,就不会受到一个foreach没有正常执行完,内部的Localtion会影响下一次了
progame
2003-04-25
打赏
举报
回复
#region 集合实现
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
public object Current
{
// 得到集合当前的元素
get
{
CFileItem item = (CFileItem)this.m_Files[this.m_Location - 1];
return (object)item;
}
}
public void Reset()
{
this.m_Location = 0;
}
public bool MoveNext()
{
this.m_Location++;
if (this.m_Location > this.m_Files.Count)
{
this.m_Location = 0;
return false;
}
else
return true;
}
#endregion
timmy3310
2003-04-25
打赏
举报
回复
把你的类代码贴出来
RuoYi-Vue-Plus整合Sa-Token:手把手配置安全
退出
与多端登录踢出策略
本文详细介绍了如何在RuoYi-Vue-Plus框架中整合Sa-Token,
实现
企业级安全
退出
与多端登录踢出策略。通过源码示例和实战配置,帮助开发者掌握会话管理的核心功能,包括单点
退出
、强制下线及多端互踢等场景,提升系统安全性。
Sa-Token框架
实现
踢人下线功能详解
会话管理是现代权限控制系统的核心功能之一,其原理是通过维护用户登录状态
实现
访问控制。在Java生态中,轻量级认证框架Sa-Token通过智能会话跟踪技术,提供了高效的踢人下线能力。该功能在安全审计、多设备管理等场景具有重要价值,特别是当检测到异常登录或需要强制终止会话时。相比传统方案,Sa-Token的踢人API支持账号级、设备级等多维度控制,且与Spring Boot深度集成。通过结合Redis
实现
分布式会话,开发者可以轻松构建高可用的踢人功能,这在电商、金融等对安全性要求高的领域尤为重要。
.Net Web API与axios
实现
无感刷新Token:双Token机制与拦截器实战
在前后端分离架构中,基于Token的身份认证是保障API安全的核心机制。其原理是通过服务端签发包含用户身份信息的令牌,客户端在请求时携带以完成鉴权。为了平衡安全性与用户体验,通常设置较短的Token有效期,但这可能导致用户操作中断。为此,双Token机制(Access Token与Refresh Token)应运而生,它通过长生命周期的Refresh Token静默获取新的Access Token,
实现
登录状态的无缝延续。这一技术在需要长时间保持用户会话的Web应用、移动端应用及单页应用(SPA)中价值显著
源码篇 Vue Router 4 中篇
源码篇 Vue Router 4 中篇围绕 1.H5 History 模式;2.区分createWebHistory(),createWebHashHistory() 和 createMemoryHistory()
基于WebSocket
实现
LibreHardwareMonitor硬件数据实时网络推送
实时数据推送是构建现代监控系统的核心技术,其核心原理在于建立持久、低延迟的双向通信通道,以取代低效的轮询机制。WebSocket协议正是为此而生,它在TCP连接之上提供全双工通信,允许服务器在数据产生时立即主动推送给客户端,从而完美契合硬件监控等高频率、小数据包的场景。这项技术的工程价值在于能够将原本局限于本地的数据(如CPU温度、GPU负载、风扇转速等传感器读数)转化为可在网络中自由流动的标准化数据流。通过将LibreHardwareMonitor这一本地硬件监控工具与WebSocket服务器深度集成,我
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章