社区
C#
帖子详情
Queue
发神经了!!!!高手快进!!!标题要长长长长长长长长长长长
goandyni
2012-07-19 06:41:38
我有一个类,是用来缓存网络发送的数据包,这个类里面我用到了 Queue<T>,T 为数据包(ABUSPacket),UI线程添加(Enqueue),然后由一个Timer隔一段时间发一个(Dequeue),但是没有任何东西发出去
断点看到,添加时有数据包,添加一次Count就加一(如:有8个),这个没错。但是到了Timer事件处理时,Queue.Count竟然等于0,再添加时,断点一看,8个,我擦勒,肿么回事啊???
...全文
77
12
打赏
收藏
Queue<T> 发神经了!!!!高手快进!!!标题要长长长长长长长长长长长
我有一个类,是用来缓存网络发送的数据包,这个类里面我用到了 Queue,T 为数据包(ABUSPacket),UI线程添加(Enqueue),然后由一个Timer隔一段时间发一个(Dequeue),但是没有任何东西发出去 断点看到,添加时有数据包,添加一次Count就加一(如:有8个),这个没错。但是到了Timer事件处理时,Queue.Count竟然等于0,再添加时,断点一看,8个,我擦勒,肿么回事啊???
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
goandyni
2012-07-19
打赏
举报
回复
看到最后,原来是我自己搞错的。谢谢 hdt(倦怠)
goandyni
2012-07-19
打赏
举报
回复
网络类常驻,Timer是AutoSet的,也常驻,同步类也常驻
goandyni
2012-07-19
打赏
举报
回复
保证应用这个类的只有一个,一对一的,timer也只有一个
是这样的:一个网络类里有一个Timer,一个缓存类,Timer到时间就从缓存中提取一个数据包并发送
代码小天王
2012-07-19
打赏
举报
回复
既然拿来做缓存 那你这种字段能保证缓存的生存周期么
cnfixit
2012-07-19
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
生存期绝对没有错 声明与new都在方法外面
[/Quote]
不是在方法外面就万事大吉的,你忘记了你还有timer
goandyni
2012-07-19
打赏
举报
回复
生存期绝对没有错 声明与new都在方法外面
goandyni
2012-07-19
打赏
举报
回复
生存期是对象级别
goandyni
2012-07-19
打赏
举报
回复
救命啊
真相重于对错
2012-07-19
打赏
举报
回复
考虑变量的生存期,和所属对象
goandyni
2012-07-19
打赏
举报
回复
自己顶,高手呢~~~~~
goandyni
2012-07-19
打赏
举报
回复
private Queue<ABUSPacket> _all_queue = new Queue<ABUSPacket>();
/// <summary>
/// 压入缓存栈
/// </summary>
/// <param name="Packet">网络数据包</param>
internal void Enqueue(ABUSPacket Packet) //UI线程执行(按钮)
{
_all_queue.Enqueue(Packet); //断点时表示正常
}
/// <summary>
/// 弹出缓存栈
/// </summary>
internal ABUSPacket Dequeue()// 由Timer执行
{
if (_all_queue.Count != 0) // 永远等于0
{
return _all_queue.Dequeue();// 所以这里永远执行不了
}
else
{
return null;
}
}
goandyni
2012-07-19
打赏
举报
回复
private Queue<ABUSPacket> _all_queue = new Queue<ABUSPacket>();
/// <summary>
/// 压入缓存栈
/// </summary>
/// <param name="Packet">网络数据包</param>
internal void Enqueue(ABUSPacket Packet)
{
_all_queue.Enqueue(Packet);
}
/// <summary>
/// 弹出缓存栈
/// </summary>
internal ABUSPacket Dequeue()
{
if (_all_queue.Count != 0)
{
return _all_queue.Dequeue();
}
else
{
return null;
}
}
游戏编程
游戏编程指南 A Guide to Game Programming v1.10alpha 最后更新于2003.1.14 本文基于VC7.0 / DirectX 9.0 / Winsock 2.2 推荐使用Word 2000及以上版本阅读 大家看完之后如果有什么意见和建议请务必在留言簿提出,谢谢!!! 如果你认为任何地方写错了,请告诉我… 如果你认为任何地方难以理解,请告诉我… 如果你觉得这篇东西
哪些 Python 库让你相见恨晚?
https://www.zhihu.com/question/24590883 173 个回答 知乎用户 翻译组勤务员小艾,不值得一提的小人物。 Awesome Python中文版来啦! 本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿。未经许可,禁止转载! 英文出处:g
左耳听风——笔记二:程序员练级攻略
左耳听风——笔记二:程序员练级攻略
编程新手导论
第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关概念,是编程入门的关键 (要懂得一点领域内的数学)《数学与算法》(编程与数学)计算机整个就是架构在数学上的,跟计算机平台实现,算法设计,,架构密切相关,,真正要深入编程,,,对数学的学习是必须的,
编程新手导论(转载)
第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关概念,是编程入门的关键 (要懂得一点领域内的数学)《数学与算法》(编程与数学)计算机整个就是架构在数学上的,跟计算机平台实现,算法设计,,架构密切相关,,真正要深入编程,,,对数学的学习是必须的,
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章