49.7 天后就不正常工作了

博客提到可让程序连续运行50天,当Enviornment.Tickcount满足条件时显示时间相同。目前在production环境不太使用hotfix,程序快运行到49天需重启,还提出能否短时间重现问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微软产品的 Bug 真是千奇百怪,今天分享一个同事碰到的问题.

问题的描述: 使用了三个 System.Threading.Timer 分别在每天的三个时间点执行一个固定的统计操作,结果发现过了一段时间后, 这三天timer 的事件出发都到同一个时间点上去了,感觉有点想三个手表都没有电池一样,stop 在同一个时间点.哈哈,后来差了一下kb,这个也是微软的一个bug,到现在还没有提供公共的fix,只能找技术中心索取一个kb.

如果您也是用这个组件一定要小心, 否则可能造成很大的数据不一志:

代码如下:
None.gifprivate void Form1_Load(object sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            System.Diagnostics.TextWriterTraceListener trace1
=new System.Diagnostics.TextWriterTraceListener("c:\\a.txt","fsd");
InBlock.gif            System.Diagnostics.Trace.Listeners.Add(trace1);    
InBlock.gif        
ExpandedBlockEnd.gif        }

None.gif
None.gif        System.Threading.Timer t1;
None.gif        System.Threading.Timer t2;
None.gif        
private void button2_Click(object sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            t1
=new System.Threading.Timer(new System.Threading.TimerCallback(Test),null,0,10000) ;
InBlock.gif                        
InBlock.gif            t2
=new System.Threading.Timer(new System.Threading.TimerCallback(Test1),null,0,10000) ;
ExpandedBlockEnd.gif        }

None.gif
None.gif        
private void Test(object o)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            System.Diagnostics.Trace.WriteLine( 
" worker 1 ;   " + DateTime.Now.ToString() + "---tickcount---" + System.Environment.TickCount.ToString());
InBlock.gif            System.Diagnostics.Trace.Flush();
ExpandedBlockEnd.gif        }

None.gif
None.gif        
private void Test1(object o)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif{
InBlock.gif            System.Diagnostics.Trace.WriteLine( 
" worker 2 ;   " + DateTime.Now.ToString() + "---tickcount---" + System.Environment.TickCount.ToString());
InBlock.gif            System.Diagnostics.Trace.Flush();
ExpandedBlockEnd.gif        }


如果有可能的话,你可以让这个程序连续运行 50 天,也就是让 Enviornment.Tickcount> 49.7*24*60*50*1000 的话,最后显示出来的时间就是一摸一样的,hoho.


到现在,我们也不太在production环境中使用hotfix,只能是在程序快运行到49天的时候,重启一下


最后的问题是,您能在短时间内重现这个问题吗?emsmiled.gif

转载于:https://www.cnblogs.com/montaque/archive/2005/02/16/104857.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值