社区
C#
帖子详情
Queue
发神经了!!!!高手快进!!!标题要长长长长长长长长长长长
goandyni
2012-07-19 06:41:38
我有一个类,是用来缓存网络发送的数据包,这个类里面我用到了 Queue<T>,T 为数据包(ABUSPacket),UI线程添加(Enqueue),然后由一个Timer隔一段时间发一个(Dequeue),但是没有任何东西发出去
断点看到,添加时有数据包,添加一次Count就加一(如:有8个),这个没错。但是到了Timer事件处理时,Queue.Count竟然等于0,再添加时,断点一看,8个,我擦勒,肿么回事啊???
...全文
73
12
打赏
收藏
Queue<T> 发神经了!!!!高手快进!!!标题要长长长长长长长长长长长
我有一个类,是用来缓存网络发送的数据包,这个类里面我用到了 Queue,T 为数据包(ABUSPacket),UI线程添加(Enqueue),然后由一个Timer隔一段时间发一个(Dequeue),但是没有任何东西发出去 断点看到,添加时有数据包,添加一次Count就加一(如:有8个),这个没错。但是到了Timer事件处理时,Queue.Count竟然等于0,再添加时,断点一看,8个,我擦勒,肿么回事啊???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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;
}
}
四级单词大全o-z
另外 要不然 否则 不同地 在不同方面 pron.其他 adj.不同的 ought ɔ:t v.aux.应当 应该 conj.应该 大概 ounce auns n.盎司 英两 our 'auə pron.我们的 adj.我们的 ours 'auəz pron.我们的 ourselves .auə'selvz ...
游戏编程
cin>>A; //输入A, 注意箭头方向的更改。 cout<<"A="< cout cout return 0; //可以指示程序正常结束 } 运行程序的方法是按工具栏中部的小三角形。 从这个程序中,我们可以看到C++程序的一些特点: (1) ...
哪些 Python 库让你相见恨晚?
https://www.zhihu.com/question/24590883 173 个回答 知乎用户 翻译组勤务员小艾,不值得一提的小人物。 Awesome Python中文版来啦!...英文出处:g
编程新手导论
第二部分 导论,这一部分主要是...(要懂得一点领域内的数学)《数学与算法》(编程与数学)计算机整个就是架构在数学上的,跟计算机平台实现,算法设计,,架构密切相关,,真正要深入编程,,,对数学的学习是必须的,
编程新手导论(转载)
第二部分 导论,这一部分主要是...(要懂得一点领域内的数学)《数学与算法》(编程与数学)计算机整个就是架构在数学上的,跟计算机平台实现,算法设计,,架构密切相关,,真正要深入编程,,,对数学的学习是必须的,
C#
110,571
社区成员
642,565
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章