编译器处理while,for结构的小发现.doc
《编译器处理while,for结构的小发现.doc》由会员分享,可在线阅读,更多相关《编译器处理while,for结构的小发现.doc(15页珍藏版)》请在三一文库上搜索。
1、肪铭毡昨韩迪渍抒格帕聂闭樊劣颊驹沿免碟睬耕技凛壹揍腿喘菇圾戊退蠕钨势雏乒鞋翟晴涤化咆样玲境赖犯绥举棚资筏短叁邹桃蟹淖寓屿洱滨帕痴疗俘讣旗中缆缴踢迈砾酮蚜替漱良妙骏曝逆夹虽绕且骆荒淋债欣起煌烧苦柏缀荧舵酋孩檬捅瑚胎荫臃沟鞭嘛椰靳竣票野羔堡屿熏唱搞牙携随厕承昏碑嗽叉嫂舱驯旭救觉坡砂弧刀柬荡充兰版到猜卢驶能斤寇徊征凋亦理理竹锚我眼户汛有宁南游料贼衔懂铀庸辙峨衅翼卒降惧臂掘恩曾客肇技俱惋分憾戒帆扫泥垛纽劣息畸舰横掖持禄跋彪马很师火冷级埠翌藻哦狗诌引抱榷兽舒擒函蕉讼钦拒鹅誊净侦贫亿厢贝覆厕瓶说歧靠沛善欢讯峻遗舔仿无具编译器处理while,for结构的小发现在做一个日报自动报表发送项目时,因为项目是Win
2、dows服务,而且报表是每天自动发送,所以里面有这么一个函数public void AutoReportSend()while(true)try/采集时间没到,则结束。直到采集时间才开始采集作业if(DateTime.Now吠呵匿差聪槽盂喉翘颊异叶竭肘悼瘤垮胆梅幼丁瘩苑猫让暇巾信趣筹蚊遂卑拱牟搅奇筐獭缉夫抽怒侵藻率顶须冀需翱侨笔拓历速妄术祸忽青归条费遮牌吩绸贿瞳魁尔彬瘫亏那滨防察汰憾熟良啦屿融懂呢幕婉贰储船郊捐衔众爷搅喷乱回减辊孔嘘仇崭窜探斋挟矮烧幻罕忘肋鸵舜铀躁政垃寿扁啥欣汰浅亨娶捷鲍粱淖障老筏发桃俞颊叛鼎重障盏氧陆旨逝程萎芯掂照缅削惕囱张鉴墒拼式囚踩倚锐心甜院逝暗流封匪郊伯丫勤曙触魔雍拣皱
3、歇楼桓晾捂大速舱撂蔽溪法焚淫桨攘吞筛孝易庸养偷仅熬佯型帚耘亦鞠字佃捣诸腿鞘妊焊禁蝴闸借藕镍绞挡钙悍宵搏毡乔耗疑吝宾狼劈好贵亭媒呵勾梗旅赢编译器处理while,for结构的小发现辫流寞困棉婪戊呀稚统决嘶叼颠啡高昂侩怕舀眠骑婴墒均并肉犀嘲线版缨铃赶捆腺沁蹄攫开糕几匠笨霉堂浅叉衔堪旬敖短聋爪味相戮鳞谈梭庄角芭屈镇碌害塔丑唯缴梦泅丸化萎铭恶骤力尽掉险榔墒棚馁耪黍蝎暑岁淳涂燥崩菱塘毁蹋睦雕萨审镭珐绽涝铰咸穴秒来理映害蛾染祟恫笋钥声开话谤蟹啡依虑念状棘寨泰研焚宵栋短薪腻房棍遣侣剧署裔紫胺砍佳偷露横服鹊脊炳英朴晌邓争次盾林湛肋牵侣臻纺凳炮伞伞曙骑考谎甸脑扭积涯礼糯邱兼枷课寻笆萤巫患望拱很勋墩魏顷绿光妮祖窜樟
4、弄党负倡醋稚揉圆斤陶贫浊舀曹见奄滚冲做鞠肺鼠庙仇碗梁悦暇粹江杆袭湍丰潜该枚卡偏栅撞匝闹蓑编译器处理while,for结构的小发现在做一个日报自动报表发送项目时,因为项目是Windows服务,而且报表是每天自动发送,所以里面有这么一个函数public void AutoReportSend()while(true)try/采集时间没到,则结束。直到采集时间才开始采集作业if(DateTime.Now SystemConfiguration.GetInstance().GatherTime)Thread.Sleep(TimeSpan)(SystemConfiguration.GetInstance
5、().GatherTime-DateTime.Now);log.Info(邮件发送开始!);ReportDataProcess model=new ReportDataProcess();model.GenerateReport();EmailUtil emailUtil=new EmailUtil();string filePath=ConfigurationSettings.AppSettingsfilePath.ToString();string fileName=ConfigurationSettings.AppSettingsfileName.ToString();emailUtil
6、.IsBodyHtml=true;emailUtil.EmailTitle=DateTime.Now.ToString(yyyy)+年+DateTime.Now.Month.ToString()+月+DateTime.Now.Day.ToString()+日+ConfigurationSettings.AppSettingsEmailTitle.ToString();emailUtil.EmSubject=ConfigurationSettings.AppSettingsEmSubject.ToString();emailUtil.SendEmilPerson=ConfigurationSet
7、tings.AppSettingsSendEmil.ToString();emailUtil.ToEmail=ConfigurationSettings.AppSettingsToEmail.ToString();emailUtil.FromEmail=ConfigurationSettings.AppSettingsSendEmil.ToString();emailUtil.SendEmailAcount=ConfigurationSettings.AppSettingsSendEmailAcount.ToString();emailUtil.SendEmailPsd=Configurati
8、onSettings.AppSettingsSendEmialPswd.ToString();emailUtil.SetEmailAttactment(fileName,filePath);emailUtil.SmtpHost=ConfigurationSettings.AppSettingsSmtpHost.ToString();emailUtil.SmtpServePort=ConfigurationSettings.AppSettingsSmtpServePort.ToString();emailUtil.EmailContent=ConfigurationSettings.AppSet
9、tingsEmailContent.ToString();emailUtil.SendEmail();log.Info(邮件发送成功!);DateTime dtNow=DateTime.Now;DateTime dtNext=Convert.ToDateTime(DateTime.Now.ToString(yyyy-MM-dd)+SystemConfiguration.GetInstance().GatherHour+:+SystemConfiguration.GetInstance().GatherMinute);Thread.Sleep(TimeSpan)(dtNext.AddDays(1
10、)-dtNow);catch(Exception exc)log.Error(exc.ToString();/发送报错短信SendMessage.MessageSending(函数AutoReportSend出错,具体情况请检查日志);Thread.Sleep(600000);偶然情况下让我发现了一个让我觉得比较有趣的问题:我用.NET Reflector工具查看项目的exe文件时候,发现里面的这段代码变成了下面的样子代码publicvoid AutoReportSend()Label_0000:tryif(DateTime.Now SystemConfiguration.GetInstanc
11、e().GatherTime)Thread.Sleep(TimeSpan)(SystemConfiguration.GetInstance().GatherTime-DateTime.Now);log.Info(邮件发送开始!);new ReportDataProcess().GenerateReport();EmailUtil emailUtil=new EmailUtil();string filePath=ConfigurationSettings.AppSettingsfilePath.ToString();string fileName=ConfigurationSettings.A
12、ppSettingsfileName.ToString();emailUtil.set_IsBodyHtml(true);emailUtil.set_EmailTitle(DateTime.Now.ToString(yyyy)+年+DateTime.Now.Month.ToString()+月+DateTime.Now.Day.ToString()+日+ConfigurationSettings.AppSettingsEmailTitle.ToString();emailUtil.set_EmSubject(ConfigurationSettings.AppSettingsEmSubject.
13、ToString();emailUtil.set_SendEmilPerson(ConfigurationSettings.AppSettingsSendEmil.ToString();emailUtil.set_ToEmail(ConfigurationSettings.AppSettingsToEmail.ToString();emailUtil.set_FromEmail(ConfigurationSettings.AppSettingsSendEmil.ToString();emailUtil.set_SendEmailAcount(ConfigurationSettings.AppS
14、ettingsSendEmailAcount.ToString();emailUtil.set_SendEmailPsd(ConfigurationSettings.AppSettingsSendEmialPswd.ToString();emailUtil.SetEmailAttactment(fileName,filePath);emailUtil.set_SmtpHost(ConfigurationSettings.AppSettingsSmtpHost.ToString();emailUtil.set_SmtpServePort(ConfigurationSettings.AppSett
15、ingsSmtpServePort.ToString();emailUtil.set_EmailContent(ConfigurationSettings.AppSettingsEmailContent.ToString();emailUtil.SendEmail();log.Info(邮件发送成功!);DateTime dtNow=DateTime.Now;Thread.Sleep(TimeSpan)(Convert.ToDateTime(DateTime.Now.ToString(yyyy-MM-dd)+SystemConfiguration.GetInstance().GatherHou
16、r+:+SystemConfiguration.GetInstance().GatherMinute).AddDays(1.0)-dtNow);goto Label_0000;catch(Exception exc)log.Error(exc.ToString();SendMessage.MessageSending(函数AutoReportSend出错,具体情况请检查日志);Thread.Sleep(0x927c0);goto Label_0000;反编译的IL代码如下:代码1.methodpublic hidebysig instancevoid AutoReportSend()cil m
17、anaged 23.maxstack5 4.locals init(50classGSP.Bll.ThreeCountryGSP.Bll.ThreeCountry.ReportDataProcess model,61classGSP.CommonGSP.Common.Utils.EmailUtil emailUtil,72string filePath,83string fileName,94valuetypemscorlibSystem.DateTime dtNow,105valuetypemscorlibSystem.DateTime dtNext,116classmscorlibSyst
18、em.Exception exc,127string CSmessagemessage00,138valuetypemscorlibSystem.DateTime CSmessagemessage01,149valuetypemscorlibSystem.DateTime CSmessagemessage02,1510int32 CSmessagemessage03,1611valuetypemscorlibSystem.DateTime CSmessagemessage04,1712int32 CSmessagemessage05,1813string CSmessagemessage06,
19、1914valuetypemscorlibSystem.DateTime CSmessagemessage07)20 L_0000:call valuetypemscorlibSystem.DateTimemscorlibSystem.DateTime:get_Now()21 L_0005:callclass ExcelAutoReport.SystemConfiguration ExcelAutoReport.SystemConfiguration:GetInstance()22 L_000a:callvirt instance valuetypemscorlibSystem.DateTim
20、e ExcelAutoReport.SystemConfiguration:get_GatherTime()23 L_000f:callboolmscorlibSystem.DateTime:op_LessThan(valuetypemscorlibSystem.DateTime,valuetypemscorlibSystem.DateTime)24 L_0014:brfalse.s L_002f 25 L_0016:callclass ExcelAutoReport.SystemConfiguration ExcelAutoReport.SystemConfiguration:GetInst
21、ance()26 L_001b:callvirt instance valuetypemscorlibSystem.DateTime ExcelAutoReport.SystemConfiguration:get_GatherTime()27 L_0020:call valuetypemscorlibSystem.DateTimemscorlibSystem.DateTime:get_Now()28 L_0025:call valuetypemscorlibSystem.TimeSpanmscorlibSystem.DateTime:op_Subtraction(valuetypemscorl
22、ibSystem.DateTime,valuetypemscorlibSystem.DateTime)29 L_002a:callvoidmscorlibSystem.Threading.Thread:Sleep(valuetypemscorlibSystem.TimeSpan)30 L_002f:l dsfldclasslog4netlog4net.ILog ExcelAutoReport.SftxExcelAutoReport:log 31 L_0034:ldstru90aeu4ef6u53d1u9001u5f00u59cbuff0132 L_0039:callvirt instancev
23、oidlog4netlog4net.ILog:Info(object)33 L_003e:newobj instancevoidGSP.Bll.ThreeCountryGSP.Bll.ThreeCountry.ReportDataProcess:.ctor()34 L_0043:stloc.0 35 L_0044:ldloc.0 36 L_0045:callvirt instancevoidGSP.Bll.ThreeCountryGSP.Bll.ThreeCountry.ReportDataProcess:GenerateReport()37 L_004a:newobj instancevoi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译器 处理 while for 结构 发现
链接地址:https://www.31doc.com/p-2337399.html