﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-adamxx</title><link>http://www.cnblogs.com/adamxx/</link><description>天下事,法无定法,然后知非法法之
世间人,尤了未了,何妨以不了了之</description><language>zh-cn</language><lastBuildDate>Fri, 05 Sep 2008 16:27:24 GMT</lastBuildDate><pubDate>Fri, 05 Sep 2008 16:27:24 GMT</pubDate><ttl>60</ttl><item><title>献给苏苏的梦呓</title><link>http://www.cnblogs.com/adamxx/archive/2008/06/11/1216850.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 11 Jun 2008 04:07:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/06/11/1216850.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1216850.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/06/11/1216850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1216850.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1216850.html</trackback:ping><description><![CDATA[<p>献给苏苏的梦呓<br />
真人真事...<br />
<br />
第一幕:<br />
<br />
她是我的高中同学!<br />
传说我是她的初恋!<br />
<br />
话说8年前:<br />
对面:清纯的脸<br />
这边:连哄带骗<br />
<br />
说来也好,这般的美女就被我遇见了.其实她那时还不是那么的美,我也是预算到她未来会很美,于是...埋下了伏笔!这叫做布局.<br />
事态发展,人还小,事情也少,你看我我看你的就走了半年,平淡!<br />
<br />
说来惭愧,自古"英雄"出少年,在大好局势下走错了一步,离开了她,于是...留下了隐患!这叫做弃子.<br />
<br />
想起后悔,据说之后,但凡想起此事,伤心欲绝,痛苦流涕,这叫做背时.<br />
<br />
唉,忘不了的..不只是那低头的温柔!<br />
<hr />
<br />
第二幕:<br />
<br />
她是我的女朋友!<br />
我爱她!<br />
<br />
8年后的相遇不是偶然...这叫做缘<br />
话说那一年的分别就是8年...<br />
<br />
夏天,傍晚,雨<br />
街的对面是她,我认得很清楚,她,是她,她变了,变得更美了...<br />
<br />
天微微有些暗了,细雨落在身上感觉有些凉意,还有些下班的人快步的走着.再转个弯就是约好的地点.她变了吗?<br />
那时只见,对面...........................<br />
赞：%^&amp;^*%#%—&#8230;&#8230;%&#8230;&#8230;*—&#183;#&#183;#&#183;#%%<br />
我靠,她对我笑,操,我只是个人,何况是个男人.瞬时间,全身血液沸腾,顾不上一切向她奔去，要不是后面有人拉我,我肯定被撞死了.<br />
再赞:%&#8230;&#8230;%%—*&#8230;&#8230;—##&#183;#&#183;#%#&#8230;&#8230;*&#8230;&#8230;<br />
<br />
她太美了,我相信世间没有哪中语言能形容她的美.<br />
我不禁惊呼:此女只于天上有...............这叫做天使.<br />
<br />
这一幕改变了我的一生......................这叫做转角遇见爱.<br />
<br />
于是,一场战役又打响了...<br />
女子,人生大事,悲喜之地,不可不察也...经过1个月的艰苦奋战,终于............这叫做收复失地.<br />
才发现:女人说她美,男人说她不只是美,还有贤惠.<br />
若娶苏苏为妻,当造金屋储之.....<br />
<br />
于是:<br />
立下2志:<br />
1志:35岁前赚够一亿<br />
2志:30岁前娶苏苏为妻.<br />
<br />
突然发现那么爱她,我很感激她,那么久来照顾我,相信我,爱我!<br />
<hr />
<br />
第三幕:<br />
<br />
她是我明天的老婆!<br />
我永远爱她! <br />
<br />
待续...&nbsp; 
<img src ="http://www.cnblogs.com/adamxx/aggbug/1216850.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42116/" target="_blank">[新闻]消息称MySQL创始人已向Sun提交辞呈</a>]]></description></item><item><title>奋斗</title><link>http://www.cnblogs.com/adamxx/archive/2008/02/29/1086658.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 29 Feb 2008 13:56:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/02/29/1086658.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1086658.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/02/29/1086658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1086658.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1086658.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1086658.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>[转]Linq 解爱因斯坦迷题</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Mon, 14 Jan 2008 04:28:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1038040.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1038040.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1038040.html</trackback:ping><description><![CDATA[摘要: 原文地址:http://www.cnblogs.com/foundation/archive/2008/01/14/1037907.html据说是爱因斯坦迷题,不知是真是假，不过这道集合运算的题还是挺有意思的，比一般的[谁是凶手]的题多了集合项之间的关系用linq的集合运算符，不用if、for等控制流语句解一下这道题.本题的解题方式用的是工作流处理问题的方式将事项分为阶段（也叫状态），每个阶段按一&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/1038040.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>在自定义Sharepoint Webpart中使用Linq的问题</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/11/1034860.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 11 Jan 2008 02:49:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/11/1034860.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1034860.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/11/1034860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1034860.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1034860.html</trackback:ping><description><![CDATA[<p>今天我们将一个Web Application迁移到Moss上,在这个过程中出现了很多的问题<br />
除开一些基本的问题以外,Linq在Moss上也会导致一些问题,记录如下:<br />
<br />
数据库:<br />
<img height="44" alt="" src="http://www.cnblogs.com/images/cnblogs_com/adamxx/MossLinq2.jpg" width="444" border="0" /><br />
<br />
字段AutoPassowrdSync数据类型bit ,允许空.<br />
<br />
在Linq to&nbsp;sql后,数据类型为 bool?,也就是Nullable&lt;bool&gt;<br />
<img height="418" alt="" src="http://www.cnblogs.com/images/cnblogs_com/adamxx/MossLinq3.JPG" width="304" border="0" /><br />
<img height="88" alt="" src="http://www.cnblogs.com/images/cnblogs_com/adamxx/MossLinq4.JPG" width="398" border="0" /><br />
<br />
测试发现,在MOSS上,到遇到类似这种Nullable&lt;bool&gt;的值将会报错.<br />
将数据库中AutoPasswordSync字段设置为不允许空,相应的在dbml里,数据类型改为bool,问题解决!<font face="Verdana"><br />
</font></p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1034860.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item><item><title>Silverlight 自定义光标 Custom Cursor</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/10/1034006.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 10 Jan 2008 09:36:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/10/1034006.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1034006.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/10/1034006.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1034006.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1034006.html</trackback:ping><description><![CDATA[<h1><script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script><script type="text/javascript">
function CreateSilverlight(){
  Silverlight.createHostedObjectEx({
    source: "streaming:/44081/CustomCursor",parentElement: Wrapper_CustomCursor});
}
</script><span style="font-size: 12pt">Silverlight 自定义光标 Custom Cursor<br />
</h1>
<font face="Verdana">
<div id="Wrapper_CustomCursor" style="overflow: hidden; width: 500px; height: 400px"></div>
<br />
<br />
其实很简单,将在Load的时候将光标设置为none值,在前台随便画一个东西,鼠标移动的时候跟随就行<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle&nbsp;</span><span style="color: #ff0000">Width</span><span style="color: #0000ff">="20"</span><span style="color: #ff0000">&nbsp;Height</span><span style="color: #0000ff">="20"</span><span style="color: #ff0000">&nbsp;x:Name</span><span style="color: #0000ff">="cursor"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle.Triggers</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">EventTrigger&nbsp;</span><span style="color: #ff0000">RoutedEvent</span><span style="color: #0000ff">="Canvas.Loaded"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BeginStoryboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Storyboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DoubleAnimation<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">Storyboard.TargetName</span><span style="color: #0000ff">="rotate"</span><span style="color: #ff0000">&nbsp;Storyboard.TargetProperty</span><span style="color: #0000ff">="Angle"</span><span style="color: #ff0000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By</span><span style="color: #0000ff">="360"</span><span style="color: #ff0000">&nbsp;Duration</span><span style="color: #0000ff">="00:00:03"</span><span style="color: #ff0000">&nbsp;RepeatBehavior</span><span style="color: #0000ff">="Forever"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Storyboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BeginStoryboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">EventTrigger</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle.Triggers</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle.RenderTransform</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">RotateTransform&nbsp;</span><span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="rotate"</span><span style="color: #ff0000">&nbsp;CenterX</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;CenterY</span><span style="color: #0000ff">="10"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle.RenderTransform</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle.Fill</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">LinearGradientBrush</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">GradientStop&nbsp;</span><span style="color: #ff0000">Color</span><span style="color: #0000ff">="White"</span><span style="color: #ff0000">&nbsp;Offset</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">GradientStop&nbsp;</span><span style="color: #ff0000">Color</span><span style="color: #0000ff">="Red"</span><span style="color: #ff0000">&nbsp;Offset</span><span style="color: #0000ff">=".5"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">GradientStop&nbsp;</span><span style="color: #ff0000">Color</span><span style="color: #0000ff">="Black"</span><span style="color: #ff0000">&nbsp;Offset</span><span style="color: #0000ff">="1"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">LinearGradientBrush</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle.Fill</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle</span><span style="color: #0000ff">&gt;</span></div>
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_47_181_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_47_181_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_47_181_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_47_181_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_47_181_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_47_181_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_47_181_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_47_181_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Loaded(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;o,&nbsp;EventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_47_181_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_47_181_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Required&nbsp;to&nbsp;initialize&nbsp;variables</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Cursor&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Cursors.None;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_57_519_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_57_519_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_57_519_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_57_519_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_57_519_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_57_519_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_57_519_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_57_519_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnMouseMove(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;MouseEventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_57_519_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_57_519_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.GetPosition(</span><span style="color: #0000ff">this</span><span style="color: #000000">).X;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.GetPosition(</span><span style="color: #0000ff">this</span><span style="color: #000000">).Y;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(x&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Width&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Height&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">)<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.Visibility&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Visibility.Collapsed;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.Visibility&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Visibility.Visible;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.SetValue</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">double</span><span style="color: #000000">&gt;</span><span style="color: #000000">(Canvas.LeftProperty,&nbsp;x);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.SetValue</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">double</span><span style="color: #000000">&gt;</span><span style="color: #000000">(Canvas.TopProperty,&nbsp;y);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
</span></font><script type="text/javascript">
var Wrapper_CustomCursor = document.getElementById("Wrapper_CustomCursor");
CreateSilverlight();
</script>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1034006.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42100/" target="_blank">[新闻]2008年9月5日科技博客精选</a>]]></description></item><item><title>根据浏览器的大小,自动调整Silverlight的大小</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/10/1033161.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 10 Jan 2008 02:49:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/10/1033161.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1033161.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/10/1033161.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1033161.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1033161.html</trackback:ping><description><![CDATA[<p><font style="font-size: 14pt; font-family: 微软雅黑" face="Verdana">根据浏览器的大小,自动调整Silverlight的大小<br />
<br />
<span style="font-size: 10pt">在Page_Load方法中添加<br />
</span><br />
</font></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">BrowserHost.Resize&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EventHandler(BrowserHost_Resize);</span></div>
<br />
Resize事件处理:<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_52_363_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_52_363_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_52_363_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_52_363_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_52_363_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_52_363_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_52_363_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_52_363_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;BrowserHost_Resize(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_52_363_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_52_363_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;xscale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;BrowserHost.ActualWidth&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Width;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;yscale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;BrowserHost.ActualHeight&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Height;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScaleTransform&nbsp;scale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ScaleTransform();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale.ScaleX&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;xscale&nbsp;;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale.ScaleY&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;yscale&nbsp;;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RenderTransform&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;scale;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
将silverlightHost的height与width成100%, 好让 Silverlight control&nbsp;随着 html 自动缩放<br />
修改<font face="Verdana">createSilverlight中的</font><font face="Verdana">properties: </font>width:"100%",height:"100%"<br />
<br />
该代码在IE7下测试成功,可以点击<a href="http://www.cnblogs.com/Files/adamxx/ResizeTest.zip">这里</a>下载演示<br />
<br />
对于Firefox:<br />
删除&nbsp;, 之前的 &lt;!DOCTYPE ...&gt;。 如果不删 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;, 虽然在IE上不会有问题,但在Firefox上则无法正常运行,因为Firefox遇到&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"&gt;时,HTML的大小会有不同的解释
<img src ="http://www.cnblogs.com/adamxx/aggbug/1033161.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42100/" target="_blank">[新闻]2008年9月5日科技博客精选</a>]]></description></item><item><title>Silerlight 3D Demo</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/09/1032341.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 09 Jan 2008 09:34:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/09/1032341.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1032341.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/09/1032341.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1032341.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1032341.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script><script type="text/javascript">
function CreateSilverlight(){
  Silverlight.createHostedObjectEx({
    source: "streaming:/44081/Silverlight3DDemo",parentElement: Wrapper_Silverlight3DDemo});
}
</script><span class="postbody">Silverlight在微软的产品特性中是没有3D功能的，但是开源社区的力量是强大的，现在有一个开源项目来实现这个功能，项目名称叫做Balder<br />
<a href="http://www.codeplex.com/Balder" target="_blank" rel="nofollow">http://www.codeplex.com/Balder</a> <br />
<br />
是1.0的框架,可以下载他的一个demo的代码,由javascript写的3d核心,看起来还是不是很爽<br />
<br />
下面看到的这个3D demo是由1.1改写后的,用C#编写的3D核心.<br />
</span><br />
<div id="Wrapper_Silverlight3DDemo" style="overflow: hidden; width: 500px; height: 400px"></div>
<br />
在Silverlight 1.1下的3D引擎也在测试阶段,并且会添加新的一些3D特性,我也会考虑在<a href="http://www.codeplex.com" target="_blank">Codeplex</a>上建立一个开源的项目,<br />
并且发布一个工作在WPF上面的3D建摸工具,初步的构想是,使用该工具能够生成3D模块的后台代码,这个代码不会以XAML的<br />
形式给出,而采用C#封装的Class初始化代码的形式给出.<br />
<br />
虽然在zam3D上已经有了类似的功能,我并没有使用过该功能,但类似的产品我已经有了一些体验,很多工具都以XAML的代码给<br />
出,你也可以很方便的实现使用该代码呈现出3D的效果,但是如果你想让他动起来,依然是一件很困难的事情.<br />
<br />
Balder项目给了我一定的启发,在FLASH上也有类似的实现,但我们需要的是一个框架,利用这个框架我们可以轻松的实现3D的<br />
展现.<br />
<br />
如果你关注Silvserlight 3D,你可以留意我的Blog,或者<a href="http://slt.cnblogs.com">Silverlight开发团队</a><br />
<script type="text/javascript">
var Wrapper_Silverlight3DDemo = document.getElementById("Wrapper_Silverlight3DDemo");
CreateSilverlight();
</script>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1032341.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>Silverlight全浏览器显示</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/09/1031863.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 09 Jan 2008 06:14:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/09/1031863.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1031863.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/09/1031863.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1031863.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1031863.html</trackback:ping><description><![CDATA[很多人问该怎么做<br />
<br />
在TestPage.html.js里面修改createSilverlight 函数<br />
主要修改<br />
<font face="Verdana"><font face="Verdana">properties: {<br />
&nbsp;&nbsp;&nbsp;width: "100%",<br />
&nbsp;&nbsp;&nbsp;height: "100%",<br />
&nbsp;&nbsp;&nbsp;version: "1.1",<br />
&nbsp;&nbsp;&nbsp;enableHtmlAccess: "true"<br />
&nbsp;&nbsp;},</font><br />
<br />
将width和height改为100%即可.<br />
<br />
但如此改动后也不是完全填满整个浏览器,silverlightHost还留有些边距<br />
这里需要修改样式,在TestPage.html中增加
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #800000">&lt;style&gt;<br />
<img id="Codehighlighter1_9_29_Open_Image" style="display: inline" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_9_29_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_9_29_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_9_29_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_9_29_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_9_29_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_9_29_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_9_29_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />*</span><span id="Codehighlighter1_9_29_Open_Text" style="display: inline"><span style="color: #000000">{</span><span style="color: #ff0000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;margin</span><span style="color: #000000">:</span><span style="color: #0000ff">0px</span><span style="color: #000000">;</span><span style="color: #ff0000">&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #800000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&lt;/style&gt;</span></div>
</font>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1031863.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>Silverlight Logo</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030151.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 04:06:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030151.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030151.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030151.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030151.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030151.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script><script type="text/javascript">
function CreateSilverlight(){
  Silverlight.createHostedObjectEx({
    source: "streaming:/44081/SilverlightTitle",parentElement: Wrapper_SilverlightTitle});
}
</script>
<div id="Wrapper_SilverlightTitle" style="overflow: hidden; width: 200px; height: 60px"></div>
<script type="text/javascript">
var Wrapper_SilverlightTitle = document.getElementById("Wrapper_SilverlightTitle");
CreateSilverlight();
</script>      <img src ="http://www.cnblogs.com/adamxx/aggbug/1030151.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42098/" target="_blank">[新闻]《孢子》正式发布</a>]]></description></item><item><title>[转]Silverlight3D模型能力之三 </title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030146.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 04:03:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030146.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030146.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030146.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030146.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030146.html</trackback:ping><description><![CDATA[<p>原文地址 <font face="Courier New">http://blog.csdn.net/dotfun/archive/2007/12/21/1957140.aspx</font><br />
<br />
使Silverlight显示3D动画的第三种方式是使用ZAM3D Tools! 它是一个基于XAML的3D Tool，以下是关于ZAM 3D的介绍（引用）：</p>
<blockquote>Electric Rain <span class="caps">ZAM 3D</span>&#8482; is a full-featured 3D modeling application that enables easy creation, customization and animation of 3D interface elements for &#8220;Avalon&#8221; based applications. Once a 3D scene is created, <span class="caps">ZAM 3D</span> automatically generates the <span class="caps">XAML </span>(eXtensible Application Markup Language) markup necessary to covert the 3D elements into an &#8220;Avalon&#8221; 3D scene. <span class="caps">XAML</span> files created with <span class="caps">ZAM 3D</span> can be directly integrated into your application development environment to create rich and engaging user experiences never before possible.</blockquote>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/ZamSS.jpg" /></p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/ZAM-AvalonChart.jpg" /></p>
<p>&nbsp;界面展示：</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/ZAMWallStreetAppSM.jpg" /></p>
<p><a onmouseover="javascript:window.status='http://www.erain.com/products/zam3d/'; return false;" title="(464 hits)" onmouseout="javascript:window.status=''; return false;" href="http://www.erain.com/products/zam3d/">http://www.erain.com/products/zam3d/</a> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />
<br />
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1957140</p>
  <img src ="http://www.cnblogs.com/adamxx/aggbug/1030146.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42098/" target="_blank">[新闻]《孢子》正式发布</a>]]></description></item><item><title>[转]Silverlight3D模型能力之二 </title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030141.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 04:01:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030141.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030141.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030141.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030141.html</trackback:ping><description><![CDATA[<script src="http://blog.csdn.net/count.aspx?ID=1957101&amp;Type=Rank"></script>
<div class="postText">
<p>原文地址 <font face="Courier New">http://blog.csdn.net/dotfun/archive/2007/12/21/1957101.aspx</font><br />
<br />
<strong><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/xaml_export_dialog.jpg" align="left" /></strong></p>
<p><strong><font size="3">使Silverlight显示3D效果的另一种方式是使用SWIFT3D 5.0，以下是SWIFT3D官方关于Silverlight3D支持的介绍</font></strong></p>
<p><strong><font size="3">Silverlight 的&nbsp;XAML导入功能：</font></strong></p>
<p><strong><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以使任何安装Silverlight插件的用户在浏览器上显示3D场景，正如FLASH中使用FlashPlayer来显示，Swift3D导入关键桢动画在2D的XAML格式（模拟3D效果），在比较大型SL项目中这些XAML文件同样可以使用Microsoft Expression Blend进行设计和编辑&#8230;&#8230;</font></strong></p>
<p><a href="http://www.erain.com/products/swift3d/silverlight/"><font size="3">http://www.erain.com/products/swift3d/silverlight/</font></a><font size="3">&nbsp;</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />
<br />
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1957101</p>
</div>
 <img src ="http://www.cnblogs.com/adamxx/aggbug/1030141.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42098/" target="_blank">[新闻]《孢子》正式发布</a>]]></description></item><item><title>[转]Silverlight3D模型能力之一 </title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030140.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 03:59:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030140.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030140.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030140.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030140.html</trackback:ping><description><![CDATA[原文地址 <font face="Courier New">http://blog.csdn.net/dotfun/archive/2007/12/21/1957077.aspx</font><br />
<br />
正如大家所知道的，Silverlight1.0到目前的1.1是不支持3D的，而Adobe的FLASH10已经声明直接支持3D，而Silverlight号称Flash&#8220;终结者&#8221;竟然在1.1没有支持，同时在Silverlight2.0的特性中也没有3D这块&#8230;&#8230;，唯一可以解释的是：这是微软的一种商业战略—&#8220;后来者居上&#8221;，虽然Silverlight目前不直接支持3D，但已经有名为&#8220;Balder&#8221;的开源项目，在CodePlex.com上可以下载，同时是Opensource的项目，这给Silverlight 3D方面带来了希望!
<p><font size="3">Silverlight3D模型能力</font>&nbsp;</p>
<p><img height="383" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/22.jpg" width="443" /></p>
<p>&nbsp;</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/3d1.jpg" /></p>
<p><strong>以下是引用：</strong></p>
<p><strong>Project Description<br />
</strong>A 3D game engine for Silverlight and possibly other .net based technologies.<br />
<br />
The name Balder comes from Norse Mythology. Balder is the modern Norwegian, Swedish and Danish form. He is also known as Baldr or Baldur (icelandic). Balder is the god of innocence.<br />
<br />
The second son of Odin is Baldr, and good things are to be said of him. He is best, and all praise him; he is so fair of feature, and so bright, that light shines from him. A certain herb is so white that it is likened to Baldr's brow; of all grasses it is whitest, and by it thou mayest judge his fairness, both in hair and in body. He is the wisest of the &#198;sir, and the fairest-spoken and most gracious; and that quality attends him, that none may gainsay his judgments. He dwells in the place called Breidablik, which is in heaven; in that place may nothing unclean be[.] - Brodeur's translation <br />
<br />
http://en.wikipedia.org/wiki/Balder<br />
<br />
<br />
For a demonstration of the first published version, go to : <br />
http://www.dolittle.com/blogs/einar/archive/2007/05/19/3d-in-silverlight-1-1-alpha.aspx<br />
</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1030140.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42098/" target="_blank">[新闻]《孢子》正式发布</a>]]></description></item><item><title>[转]Silverlight：你需要知道的十件事情</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/03/1024443.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 03 Jan 2008 05:25:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/03/1024443.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1024443.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/03/1024443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1024443.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1024443.html</trackback:ping><description><![CDATA[<span style="color: navy">原文地址:&nbsp;&nbsp;&nbsp;&nbsp;<font face="Courier New">http://silverlighting.net/article.asp?id=128</font><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;微软高调推出号称&#8220;Flash杀手&#8221;的Silverlight之后，虽然得到了普遍的关注，但是仅有的几个演示内容似乎仍不能让大家弄明白这到底是有什么独到之处，如果仅仅是替代Flash的已有功能的话，肯定不值得微软如此隆重的登场推介。</span><br />
简单的说，Silverlight是一个跨平台跨操作系统的插件，使Web开发者能够在浏览器中建造丰富的媒体体验和RIA应用。目前发布的版本为 RC版，可用于Windows平台上的IE和Firefox浏览器，以及Mac OS X平台上的Firefox和Safari浏览器。 <br />
　　在公共发布版本来临之际，现在正是了解Silverlight的好时候，本文解释了微软的Silverlight 10个主要特点，希望能够帮助你更多了解Silverlight的好处和局限性。<br />
<br />
<span style="color: navy">1、Silverlight是跨平台/浏览器的</span><br />
　　对于大部分开发团队，创建一个能够在所有流行的浏览器(包括IE、Firefox、Safari、Opera)上完美运行的Web站点是很具挑战性的事情。这不只是增加代码实现的问题，还要进行大量复杂的测试。<br />
　　通常面对这个问题的解决方法有两个：仅支持少数最流行的浏览器或者增加质量保证人员的数量。<br />
　　而Silverlight允许&#8220;一次开发，到处运行&#8221;，微软已经承诺会支持Windows和Mac上的Opera，而Silverlight的Linux版Moonlight也正在开发中。<br />
<br />
<span style="color: navy">2、Silverlight 1.1 才是好戏开场</span><br />
　　对于目前的Silverlight 1.0 RC版，仍有很多组织在考虑是否开始在此平台上进行开发。Silverlight 1.0已经有了许多重要有趣的功能，但还有更多的精彩内容仍需到1.1版才会出现。<br />
　　Silverlight 1.1(目前仍处于Alpha预览)初次开始支持.NET，包括了基本的.NET语言：C#和Visual Basic。而微软说，Silverlight 1.1将会带有.NET对动态语言的支持，例如Ruby、Python、动态VB和托管JScript。等到1.1正式发布，所有.NET语言的支持都会 加入近来，这等于给浏览器添加了.NET编译器。<br />
<br />
<span style="color: navy">3、Silverlight 使用开发者们已经掌握的技术</span><br />
　　Silverlight由微软现有的一些技术创建而成，如XAML，JavaScript以及.NET技术。如果你已经很熟悉微软.NET和Web开发技术，这些都可以应用在Silverlight的开发中。<br />
　　你选择开始新项目的Silverlight版本主要基于开发团队的技术方向。如果你的开发团队主要做ASP.NET服务器端开发(主要是C#和 VB.NET)，你就需要等待1.1的正式发布，如果你的团队专攻像JavaScript这类的客户端开发，Silverlight就正适合你。<br />
<br />
<span style="color: navy">4、Silverlight的用户界面使用标记语言——就像HTML</span><br />
　　Silverlight使用XAML来进行用户界面设计。你可能已经很熟悉另一种标记语言了：HTML。HTML文件是纯文本的，它只需要告诉浏览器如何渲染网页，XAML也是这样的，只不过，执行文本命令的不再是浏览器，而是Silverlight。<br />
　　无论开发者在服务器端用什么工具进行怎样的开发，最后你总要创建动态的HTML页面。XAML是标记语言，因此你可以使用服务器端技术动态创建XAML，就像你的开发团队动态创建HTML一样。标记语言有所不同，但技术并未变化。<br />
<br />
<span style="color: navy">5、Silverlight和AJAX技术互为补充</span><br />
　　网络是不断进化的。回到1990年代，所有人都告诉开发者应该把尽可能多的执行都放在服务器端，技术上没问题，但是这相当影响用户体验。现在AJAX已经广泛流行开来，把代码直接放置在浏览器中就可以有效改善用户体验，这方面最典型的代表就是Google Maps。<br />
　　Silverlight也参照了这样的模型，允许在浏览器中创造更加丰富的用户界面，而采用AJAX和服务器端交换数据使Silverlight更加强大，结合了Silverlight丰富的用户界面和AJAX的异步数据传输，用户将得到非常舒适的交互体验。<br />
<br />
<span style="color: navy">6、Silverlight允许开发者和设计者协同工作</span><br />
　　网络要求开发者们必须越来越多地考虑设计和美观问题，对用户的快速响应和直观的界面已经成为开发标准，这需要在开发中同时加入美术设计和用户体验规划。<br />
　　然而，美术师和程序员使用完全不同的资源和工具。通常情况是，美术师把图片文件或者HTML框架发给开发者以整合应用程序代码，当设计做出更改，整合就没完没了地进行。<br />
　　Silverlight能提供更好的开发模式。微软提供给Silverlight的工具包是一系列复杂工具的集合，例如Visual Studio，还有连接设计者的工具，成为Expression Studio。<br />
　　对于Silverlight，主要的设计工具是Expression Blend，它可以按设计者们所熟知的方式创建XAML内容，使用起来和Adobe Illustrator或者Photoshop差不多。但不同之处在于Blend和开发者使用同样的工程项目文件，XAML和JavaScript文件， 就像在Visual Studio中那样。当设计完成并修整好，不需要进行中间的整合过程，设计者就可以看到开发人员直接将其作为项目素材加入开发项目。这样做有助于设计者和 开发人员更加紧密地协同工作。<br />
<br />
<span style="color: navy">7、Silverlight将分包发布</span><br />
　　Silverlight会分成多个数据包发送给浏览器，也就是说代码会分成一个或多个包(JavaScript文件，编译文件等等)，设计也分成一个或多个包(XAML)，以及其他文件(包括图片、字体、视频)。<br />
　　刚开始习惯了Flash的单文件分发模式的开发者会不大理解为什么这样做。实际上，这是有好处的。分离的包比现在的Flash完整打包更有助于在服 务器端动态地创建内容，并按照标记语言自由组合。Silverlight也提供功能可以使用zip文件把所有XAML代码使用的内容打包给用户下载。<br />
<br />
<span style="color: navy">8、Silverlight是崭新的</span><br />
　　在写就本文的时候，Silverlight 1.0为RC版，Silverlight 1.1则刚刚发布Alpha版，这项技术与类似的其他公司同类技术(尤其是Adobe的Flash和Flex)相比还不够成熟。Flash目前已经到了 9.0，它花了很长时间才达到现在的普及度，但这不是说Silverlight追不上来，微软在学习他人的经验和教训方面很有一手(可以参考一下Java 和.NET)，当然这也不是绝对的。<br />
　　Silverlight不是Windows Forms、Windows Presentation Foundation(WPF)、Java Applet或者Sharepoint的替代者，简单的说，如果你需要创建丰富的，优秀的，同时具备跨所有平台和操作系统的应用，那么 Silverlight正合适。<br />
<br />
<span style="color: navy">9、Silverlight XAML对照WPF XAML</span><br />
　　要把XAML吹捧成为微软WPF的特长之处并不难，但是它实际上并没有看起来那么优秀，这一方面是由于WPF较低的采用率，另一方面就是WPF XAML和Silverlight XAML的区别了。<br />
　　首先，WPF的采用率相对于其他客户端技术而言(例如Visual Basic 6和.NET的Windows Forms)比较低，因此XAML也基本上被荒废了。<br />
　　第二，Silverlight XAML的语法比WPF XAML要简单一些，当然也会比WPF XAML弱一点，这既是好事也是坏事。Silverlight非常容易上手，但是从WPF转移而来的开发者可能会觉得有点不够用。<br />
　　按我的感觉，较简洁的语法对于Silverlight实际上是最合适的，因为运行环境对于用户而言越精简越好。Silverlight并不需要把所 有东西都囊括进来，对于一个轻量级客户端而言没有这个必要。当然，要能给Silverlight增加更多的功能肯定不错，但是目前不能仅仅考虑这些，我们 需要谨慎考量加入多少，同时还能保持接口的简洁和高效。<br />
<br />
<span style="color: navy">10、Silverlight非常适合学习XAML</span><br />
　　就象前一节所说的，Silverlight有着轻量级的XAML语法，这意味着它对于学习XAML的工作方式非常有益，引导那些正在学习XAML的 开发者创建简明清晰的代码，帮助他们快速理解Silverlight的功能特性，当他们开始投向WPF的XAML的时候，就会发现更多的功能和特性已经准 备就绪了。<br />
　　相反的，如果开发者从WPF开始应用XAML，随后换到Silverlight的话就不得不扔掉许多特性。Silverlight的运行时库目前只有大约4.5MB，.NET 3.0运行时库(第一个支持WPF的)则接近30MB。<br />
<br />
　　Silverlight是一个对公司、消费者、用户都大有裨益的新技术，看了上面这些，现在你可以决定该如何在你的Web战略中应用Silverlight了。 
  <img src ="http://www.cnblogs.com/adamxx/aggbug/1024443.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42097/" target="_blank">[新闻]微软CFO:仍对收购雅虎搜索业务感兴趣</a>]]></description></item><item><title>[转]在ASP.NET中使用LINQ(第一部分) </title><link>http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 18 May 2007 02:37:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/751191.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/751191.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/751191.html</trackback:ping><description><![CDATA[摘要: 在ASP.NET中使用LINQ(第一部分) 【原文地址】Using LINQ with ASP.NET (Part 1) 【原文发表日期】Sunday, May 14, 2006 9:49 PM最近使我激动不已的新鲜事之一就是LINQ系列技术的出现，包括LINQ，DLINQ，XLINQ和不久后的其他技术。LINQ将被完全集成到代号为Orcas的下个版本Visual Studio中，而且它也包含了一&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/751191.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42095/" target="_blank">[新闻]SQL Server2008十月亮相 标榜智能数据平台</a>]]></description></item><item><title>[转]代码中的力与美</title><link>http://www.cnblogs.com/adamxx/archive/2007/05/01/733909.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 01 May 2007 02:02:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/05/01/733909.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/733909.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/05/01/733909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/733909.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/733909.html</trackback:ping><description><![CDATA[<p>原文地址见:http://dev.yesky.com/440/2338940.shtml</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 似漫漫征途，半个世纪，代码发展至今已有大从如同象形文字般的纸孔设计到01机器指令序列、到能进行简单翻译的汇编伪指令集..到后来的结构化<a class=bluekey href="http://dev.yesky.com/" target=_blank><font color=#000000>程序</font></a>语言和如今的面向对象语言设计、脚本语言以及更多将来未知的代码语言,可谓层出不穷。在如同物种优胜劣汰般的法则下，代码也随着我们思想力、行动力的不断前进、不断进化。代码对我犹如一座雕像般具有着力与美。 <br><br>　　<strong>代码之力<br></strong><br>　　代码之力体现在它代表了创作者的意志力和思想力。<br><br>　　那些简单的符号，它们孕育在苦思冥想之中、生长于严谨的设计之下、绽放在千锤百炼的雕琢之后。可以说每一行都浸透着作者的深厚的思考，看似毫无血肉的行行代码便有了生机。作者的思考便是代码的母体和起源，也许就是一个闪过的念头，却生发出许多思路。<br><br>　　当我作为一个设计者，在动工修建这座程序大厦之前，总是要细心研究:从实际出发、从需求开始、从框架着手.... 在这一个时期虽没有半字的代码产生，可正是这个阶段决定了代码的形状、姿态、性格、特征。方案中的的每一个细节都我经过仔细推敲、慎重分析，我们的思想力、意志力决定着代码生死存亡。<br><br>　　我们思考的能力越强,代码的生命力就越久；我们的意志力越强,代码的体质就越壮。任凭风吹日晒,不会千疮百孔。在智慧的推动下、保护中，它们一天天成长。<br><br>　　<strong>代码之美<br></strong><br>　　代码之美，是看似铅印的简单字母，却有一种美潜在其中。<br><br>　　虽然这美并不金玉其外，也绝非造型优雅，但却是从不同角度、不同深度，甚至于在转念的瞬间而闪过的想象之美。代码因了人的先天孕育和后天雕琢而变得丰美、变得千姿百态、变得珠圆玉润..<br><br>　　代码产生之前，是经怎样的想象、理解设计而成，在此过程中有很多冲动、茫然和冥思。如同一幅画，无论其美丑那都是旁人的评价，就作者而言，那是无论结果如何，都是他思想和奋斗的结晶。而这一份在心中印下的美是别人的批评无法抹去，也是别人的赞扬替代不了的。<br><br>　　代码雏形之后，要经过反复的修改测试，就像一座青铜雕像，在石膏模具完成之后，必然要经历一番千锤百炼、水深火热，才见得世人。程序员对代码品质的要求丝毫不比艺术家们来的少，.. 且与艺术家们一样，程序员的灵魂也是他们的思想，若抛去了思想就如同无水之渊。与剪纸、泥塑一样，有多少不同风格的创作就有多少不同模式、形态、思路的代码，仿若是一座大大的花园中，开放着五颜六色的花。美的风景，潜在其中、唯有心知。<br><br>　　<strong>代码之感悟</strong><br><br>　　代码与一般的艺术创作不同，它并非让人看后就足矣，而是身负着作者寄予的厚望：让用户受益、让工作变得更轻松。这千行万行的代码在不同的机器、不同的系统、不同得行业上日以继夜地运转着，感<br>悟当我们在咖啡馆里轻松地与朋友喝茶聊天，当我们在书房享受散文诗歌的魅力时，计算机程序已为我们备好第二天要汇总的大量数据、各种家电芯片中的固化程序已帮我们处理好那些繁重的家务。<br><br>　　但我们仍不能因为重视功能、效果而忽略代码作为我们思想行动的延伸而产生的力与美。<br><br>　　程序员也绝非为了某个项目而存在的职业，而是赋予了创造美与力的生涯。在每个程序员的眼中，那些别人看来乏味难懂的代码，却是闪耀在思想银河之中的点点繁星。也许，到了匮乏精力、体力不支的时候，无法再为自己的一次冲动或某个灵机一闪，而写出隽秀的程序。但在回忆之时，也会有泉涌般的感动：感动在那个深夜的灯下执著地书写、感动在那瑟瑟的寒风中痴迷地思考、感动在看到那些你多少个日夜拼搏出来的代码在为他人默默地工作、感动在于千头万绪的苦思之后终于看到曙光..<br><br>　　每当我写完一段复杂的程序，就会有一种众里寻他千<a class=bluekey href="http://com.chinabyte.com/baidu/" target=_blank><font color=#000000>百度</font></a>的感受，而当看到那灯火阑珊处的人时，却又如张爱玲所言&#8220;原来你也在这里&#8221;。而当我完成一个<a class=bluekey href="http://soft.yesky.com/" target=_blank><font color=#000000>软件</font></a>项目，就如同走过一段人生的荆棘之路，有一种苦与乐相互搀扶的体会。<br><br>　　对于程序员的感受是笔触纸端如流水,爱恨百味难诉完。回归到力与美的理解,希望每一个在程序生涯中奋斗的同道中人,都怀有一种执著与感恩:执著在这无尽的思想疆域,用每一行代码实现我们人生的价值;感恩于这小小的代码,能让我们把所想所愿发挥得淋漓尽致。&nbsp;</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/733909.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42091/" target="_blank">[新闻]淘宝将与阿里妈妈合并 大淘宝战略启动</a>]]></description></item><item><title>结束的时候只有我知道</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/14/713515.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 14 Apr 2007 11:21:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/14/713515.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/713515.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/14/713515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/713515.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/713515.html</trackback:ping><description><![CDATA[今天就是这一天了,看吧,天都变灰了.<br><br>其实我真的好委屈,突然觉得那么久都不值得,明明就是我被欺负了,到头来还是她在我面前哭.<br>一切都是假的,都是虚伪的.这个世界太不公平... 
<img src ="http://www.cnblogs.com/adamxx/aggbug/713515.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42090/" target="_blank">[新闻]电脑报借盛大进入网游市场</a>]]></description></item><item><title>.NET中多线程的同步资源访问</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sun, 08 Apr 2007 04:35:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/704549.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/704549.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/704549.html</trackback:ping><description><![CDATA[<p>在应用程序中使用多个线程的一个好处是每个线程都可以异步执行。对于 Windows 应用程序，耗时的任务可以在后台执行，而使应用程序窗口和控件保持响应。对于服务器应用程序，多线程处理提供了用不同线程处理每个传入请求的能力。否则，在完全满足前一个请求之前，将无法处理每个新请求。</p>
<p>然而，线程的异步特性意味着必须协调对资源（如文件句柄、网络连接和内存）的访问。否则，两个或更多的线程可能在同一时间访问相同的资源，而每个线程都不知道其他线程的操作。结果将产生不可预知的数据损坏。 </p>
让我们先来看一片java的例子:<a id=_250ed33299e9_HomePageDays_DaysList_ctl01_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/adamxx/archive/2007/03/31/703264.html"><font color=#0000ff>多线程未同步可能导致的问题及其解决方案</font></a><br>下面是C#的代码<br>transfer方法<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_54_412_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_412_Open_Text.style.display='none'; Codehighlighter1_54_412_Closed_Image.style.display='inline'; Codehighlighter1_54_412_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_54_412_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_412_Closed_Text.style.display='none'; Codehighlighter1_54_412_Open_Image.style.display='inline'; Codehighlighter1_54_412_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;transfer(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;from,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;to,&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount)&nbsp;</span><span id=Codehighlighter1_54_412_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_54_412_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(accounts[from]&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;amount)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(System.Threading.Thread.CurrentThread.Name);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[from]&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{0:F2}&nbsp;from&nbsp;{1}&nbsp;to&nbsp;{2}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;amount,&nbsp;from,&nbsp;to);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[to]&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Total&nbsp;Balance:&nbsp;{0:F2}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;getTotalBalance());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
run方法<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_18_457_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_457_Open_Text.style.display='none'; Codehighlighter1_18_457_Closed_Image.style.display='inline'; Codehighlighter1_18_457_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_457_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_457_Closed_Text.style.display='none'; Codehighlighter1_18_457_Open_Image.style.display='inline'; Codehighlighter1_18_457_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()&nbsp;</span><span id=Codehighlighter1_18_457_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_18_457_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;rand;<br><img id=Codehighlighter1_61_425_Open_Image onclick="this.style.display='none'; Codehighlighter1_61_425_Open_Text.style.display='none'; Codehighlighter1_61_425_Closed_Image.style.display='inline'; Codehighlighter1_61_425_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_61_425_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_425_Closed_Text.style.display='none'; Codehighlighter1_61_425_Open_Image.style.display='inline'; Codehighlighter1_61_425_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_61_425_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_61_425_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_92_411_Open_Image onclick="this.style.display='none'; Codehighlighter1_92_411_Open_Text.style.display='none'; Codehighlighter1_92_411_Closed_Image.style.display='inline'; Codehighlighter1_92_411_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_92_411_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_411_Closed_Text.style.display='none'; Codehighlighter1_92_411_Open_Image.style.display='inline'; Codehighlighter1_92_411_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_92_411_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_92_411_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rand&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Random();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;toAccount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.Next(bank.size);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.NextDouble()&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;maxAmount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bank.transfer(fromAccount,&nbsp;toAccount,&nbsp;amount);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Threading.Thread.Sleep(rand.Next(DELY));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_445_447_Open_Image onclick="this.style.display='none'; Codehighlighter1_445_447_Open_Text.style.display='none'; Codehighlighter1_445_447_Closed_Image.style.display='inline'; Codehighlighter1_445_447_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_445_447_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_445_447_Closed_Text.style.display='none'; Codehighlighter1_445_447_Open_Image.style.display='inline'; Codehighlighter1_445_447_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_445_447_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_445_447_Open_Text><span style="COLOR: #000000">{&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br>这个问题在.net中同样存在,对于.net有下面几中解决方案可以确保安全的执行多线程处理:<br><br>1)lock 关键字<br>2)监视器<br>3)同步事件和等待句柄<br>4)Mutex 对象<br><br>这里我们只说一下使用lock关键字,如果需要更多信息,请访问msdn:<br>ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/413e1f28-a2c5-4eec-8338-aa43e7982ff4.htm<br><br>lock 关键字可以用来确保代码块完成运行，而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 <br>lock 语句以关键字 lock 开头，它有一个作为参数的对象，在该参数的后面还有一个一次只能由一个线程执行的代码块。例如：<br><br>public void Function()<br>{<br>&nbsp;&nbsp;&nbsp; System.Object lockThis = new System.Object();<br>&nbsp;&nbsp;&nbsp; lock(lockThis)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Access thread-sensitive resources.<br>&nbsp;&nbsp;&nbsp; }<br>}<br>修改run方法<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_18_530_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_530_Open_Text.style.display='none'; Codehighlighter1_18_530_Closed_Image.style.display='inline'; Codehighlighter1_18_530_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_530_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_530_Closed_Text.style.display='none'; Codehighlighter1_18_530_Open_Image.style.display='inline'; Codehighlighter1_18_530_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()&nbsp;</span><span id=Codehighlighter1_18_530_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_18_530_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;rand;<br><img id=Codehighlighter1_60_500_Open_Image onclick="this.style.display='none'; Codehighlighter1_60_500_Open_Text.style.display='none'; Codehighlighter1_60_500_Closed_Image.style.display='inline'; Codehighlighter1_60_500_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_60_500_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_500_Closed_Text.style.display='none'; Codehighlighter1_60_500_Open_Image.style.display='inline'; Codehighlighter1_60_500_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span id=Codehighlighter1_60_500_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_60_500_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_91_486_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_486_Open_Text.style.display='none'; Codehighlighter1_91_486_Closed_Image.style.display='inline'; Codehighlighter1_91_486_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_91_486_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_486_Closed_Text.style.display='none'; Codehighlighter1_91_486_Open_Image.style.display='inline'; Codehighlighter1_91_486_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_91_486_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_91_486_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_125_468_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_468_Open_Text.style.display='none'; Codehighlighter1_125_468_Closed_Image.style.display='inline'; Codehighlighter1_125_468_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_125_468_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_468_Closed_Text.style.display='none'; Codehighlighter1_125_468_Open_Image.style.display='inline'; Codehighlighter1_125_468_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">lock</span><span style="COLOR: #000000">&nbsp;(bank)&nbsp;</span><span id=Codehighlighter1_125_468_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_125_468_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rand&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Random();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;toAccount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.Next(bank.size);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.NextDouble()&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;maxAmount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bank.transfer(fromAccount,&nbsp;toAccount,&nbsp;amount);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Threading.Thread.Sleep(rand.Next(DELY));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_519_520_Open_Image onclick="this.style.display='none'; Codehighlighter1_519_520_Open_Text.style.display='none'; Codehighlighter1_519_520_Closed_Image.style.display='inline'; Codehighlighter1_519_520_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_519_520_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_519_520_Closed_Text.style.display='none'; Codehighlighter1_519_520_Open_Image.style.display='inline'; Codehighlighter1_519_520_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span id=Codehighlighter1_519_520_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_519_520_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
使用lock关键字锁住了bank对象的实例,lock 确保当一个线程位于代码的临界区时，另一个线程不进入临界区。如果其他线程试图进入锁定的代码，则它将一直等待（即被阻止），直到该对象被释放.<br>这里使用lock需要注意的是:<br>应避免锁定 public 类型，否则实例将超出代码的控制范围。常见的结构 <code><font face=NSimsun>lock (this)</font></code>、<code><font face=NSimsun>lock (typeof (MyType))</font></code> 和 <code><font face=NSimsun>lock ("myLock")</font></code> 违反此准则： <br>1.如果实例可以被公共访问，将出现 lock (this) 问题。<br>2.如果 MyType 可以被公共访问，将出现 lock (typeof (MyType)) 问题<br>3.由于进程中使用同一字符串的任何其他代码将共享同一个锁，所以出现 lock(&#8220;myLock&#8221;) 问题.<br><br>就我个人而言,我觉得多线程如果要访问共享数据必须同步 
<img src ="http://www.cnblogs.com/adamxx/aggbug/704549.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42079/" target="_blank">[新闻]Chrome开发团队曝光 多人出身微软网景火狐</a>]]></description></item><item><title>落户cnblogs</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/704012.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 08:58:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/704012.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/704012.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/704012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/704012.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/704012.html</trackback:ping><description><![CDATA[累了一天了,终于把blog从csdn搬到这里了,有一部分是RSS导入过来的,可能暂时只有摘要,我会copy过来的.<br>希望广大cnblogs的朋友多多支持<img height=20 src="http://www.cnblogs.com/Emoticons/QQ/07.gif" width=20 border=0><br><br>我在CSDN的BLOG地址请点<a href="http://blog.csdn.net/adamxx">这里</a>&nbsp;---&gt;&gt;&gt;&nbsp; <a href="http://blog.csdn.net/adamxx">http://blog.csdn.net/adamxx</a>
<img src ="http://www.cnblogs.com/adamxx/aggbug/704012.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42074/" target="_blank">[新闻]Chrome, 浏览器还重要吗</a>]]></description></item><item><title>[转]爱是双方的</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 08:28:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703946.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703946.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703946.html</trackback:ping><description><![CDATA[摘要: 爱是双方的,感动ing...&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/703946.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42074/" target="_blank">[新闻]Chrome, 浏览器还重要吗</a>]]></description></item><item><title>Adobe Apollo 初步研究</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/703679.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 03:48:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/703679.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703679.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/703679.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703679.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703679.html</trackback:ping><description><![CDATA[&nbsp;
<h1><span>Adobe Apollo </span><span>初步研究</span></h1>
<span>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">这几天在一家公司实习</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">上班不安逸</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">还是在学校好玩</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">才去的时候老板叫我学一下</span><span lang=EN-US><font face=Calibri>Flex,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">昨天又叫我去关注一下</span><span lang=EN-US><font face=Calibri>Apollo.</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">正在郁闷</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">又学这个又学那个的</span><span lang=EN-US><font face=Calibri>.</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">当我了解到</span><span lang=EN-US><font face=Calibri>Apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">技术的时候</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">就被他深深的吸引了</span><span lang=EN-US><font face=Calibri>.</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">下面是网上对</span><span lang=EN-US><font face=Calibri>Apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">的一些评论</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">然后我会讲解一个使用</span><span lang=EN-US><font face=Calibri>apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">做一个简单记事本的例子</span><span lang=EN-US><font face=Calibri>.</font></span></p>
</span>
<p>&nbsp;</p>
<p><span>时下，关于</span><span>Apollo</span><span>的消息被炒得沸沸扬扬。其实结合部分国内外</span><span>blogger</span><span>的探讨，我认为，</span><span>Apollo</span><span>的革命并非技术上的，而是商业上的。</span><span>Apollo</span><span>的技术封装让现有的技术得到了极大的保留，设计师和开发工程师们可以方便地将自己的代码平移到新的平台上，并且发布、部署的方式比之前的任何一款开发工具都方便得多。</span></p>
<p><span>Apollo</span><span>带来的革命，号称</span><span>&#8220;Desktop2.0&#8221;</span><span>。其内容从</span><span>Flash, HTML/CSS/JS, </span><span>到</span><span>PDF</span><span>，几乎涵盖了时下最</span><span>&#8220;</span><span>流行</span><span>&#8221;</span><span>的</span><span>Web</span><span>内容载体。此外，</span><span>&#8220;</span><span>可离线</span><span>&#8221;</span><span>应用模式能让用户更加安全、舒适的进行工作和娱乐。用户们不必再抱怨因网络故障而造成的信息损失了，而且也可以借助本地资源更好地节省带宽和其他</span><span>&#8220;</span><span>紧张而充满麻烦</span><span>&#8221;</span><span>的网络资源。</span></p>
<p><span>把</span><span>Web2.0</span><span>应用搬回家，估计会让</span><span>Apollo</span><span>的</span><span>Start-up</span><span>们又有不少</span><span>copy case</span><span>可以做了。从商业的角度来讲，</span><span>Apollo</span><span>创造的价值远胜于给用户带来用户体验上的提升。对于终端用户来说，他们想要获得一份</span><span>Web-Desktop</span><span>应用，都要经过下载、安装、建立连接的过程，他们不会关心你的程序是由什么开发的。站在产品的角度上，只要能进入桌面，文件系统的支持以及本地各种服务、应用的支持都不是问题，更有许多成熟的框架和接口能让</span><span>UI</span><span>层直接调用</span><span>GPU</span><span>指令来构建绚丽的应用。然而，</span><span>Apollo</span><span>应用却让以往只属于</span><span>.net/Java/C++</span><span>程序员和企业能达到的目标对于一名普通的</span><span>WebDeveloper</span><span>或者一家小型的网站来说也</span><span>&#8220;</span><span>易如反掌</span><span>&#8221;</span><span>！多年以来旁人对</span><span>WebDeveloper</span><span>比</span><span>.net/Java/C++</span><span>程序员差的舆论必然会得到缓解？抛开一些</span><span>&#8220;</span><span>浮躁</span><span>&#8221;</span><span>、</span><span>&#8220;</span><span>效率不济</span><span>&#8221;</span><span>等</span><span>Web</span><span>程序员和</span><span>Web</span><span>产品的</span><span>&#8220;</span><span>通病</span><span>&#8221;</span><span>不谈，</span><span>Web</span><span>应用的一大优势是：其产品往往是各类软件产品中面对用户群最多、最广，变动频率最高的产品。优秀的</span><span>Web</span><span>产品的用户体验必然是经得住考验的，尤其是此类产品往往都拥有较高的</span><span>&#8220;</span><span>用户体验开发效率</span><span>&#8221;</span><span>，即单位时间工作成本增量所带来的用户体验提升会更高。</span></p>
<p><span>Apollo</span><span>的价值在于，大大地提高了产品</span><span>Designer</span><span>和</span><span>Developer</span><span>的</span><span>&#8220;</span><span>开发体验</span><span>&#8221;</span><span>，从战略角度来讲，</span><span>Apollo</span><span>应用将会有更广大的开发者基础。</span></p>
<p><span>对于采用</span><span>Apollo</span><span>应用程序部署产品线的企业而言，桌面应用程序更是避免了</span><span>Marketing</span><span>中的</span><span>&#8220;Clutter&#8221;</span><span>问题：一部分通过习惯使用搜索引擎来寻找服务的用户不会再被搜索引擎</span><span>&#8220;</span><span>领到</span><span>&#8221;</span><span>一个</span><span>&#8220;</span><span>满是您竞争对手的结果列表页</span><span>&#8221;</span><span>了，这样您的用户发现您的同行业竞争对手的机会就会大大降低。</span></p>
<p><span>除了不如直接在页面中打开方便、下载后的安全隐患之外，</span><span>Apollo</span><span>也有很多其他的争议。其中最</span><span>&#8220;</span><span>有趣的</span><span>&#8221;</span><span>的无外乎，有人认为</span><span>Apollo</span><span>并非直接与微软为敌，而是与</span><span>Firefox3</span><span>竞争</span><span>&#8230;&#8230;</span></p>
<p>&nbsp;</p>
<p><span>以上信息来自于</span><span><a title="Adobe Apollo商业革命" href="http://www.awflasher.com/blog/archives/834" target=_blank><strong><span>Apollo</span></strong><strong><span><span>开发的商业前景及革命（上）</span></span></strong></a></span><span>：</span><span><a href="http://www.awflasher.com/blog/archives/834">http://www.awflasher.com/blog/archives/834</a></span></p>
<p><span>到底什么是</span><span>Apollo</span><span>呢</span><span>?</span></p>
<p><span>我迫不及待的</span><span>download</span><span>了关于</span><span>Apollo </span><span>开发的一系列资源</span><span>,</span><span>其中包括</span><span>:</span></p>
<p><span>apollo runtime, <strong><span>apollo_win_alpha1_031907.msi</span></strong></span></p>
<p><span>apollo sdk, <strong><span>apollo_sdk_alpha1_031907.zip</span></strong></span><strong></strong></p>
<p><span>flex extensions for apollo, <strong><span>fb_apollo_extensions_win_alpha1_031907.exe</span></strong></span></p>
<p><span>这</span><span>3</span><span>个是最重要的吧</span><span>,</span><span>其实</span><span>sdk</span><span>可以不用</span><span>,</span><span>但我做了一个记事本的例子用到了他</span><span>.</span></p>
<p><span>当然</span><span>Flex Builder 2</span><span>也是需要的</span><span>,</span><span>当然你也可以选择</span><span>eclipse,</span><span>但我觉得还要配置</span><span>,</span><span>麻烦死了</span><span>.</span></p>
<p><span>所有东西都可以从</span><span>adobe</span><span>官网上免费下载</span><span>,</span><span>现在版本是</span><span>alpha1.</span></p>
<p><span>当你安装了</span><strong><span>fb_apollo_extensions_win_alpha1_031907.exe</span></strong><span>后</span><span>,</span><span>就可以在</span><span>FB2</span><span>上开发</span><span>apollo</span><span>应用程序了</span><span>,</span><span>我做了一个简单的记事本程序</span><span>,</span><span>给大家瞧瞧</span><span>.</span></p>
<p><span>在</span><span>fb2</span><span>中新建一个</span><span>apollo project</span><span>就可以开始了</span><span>.</span><span>整个界面用</span><span>mxml</span><span>来搭建</span><span>,</span><span>是不是很爽</span><span>,</span><span>这用我们可以做出很漂亮很漂亮的界面来</span><span>.</span></p>
<p><span>记事本的编辑框我用的</span><span>&lt;mx:TextArea&gt;</span><span>这个东西直接支持右键菜单</span><span>(</span><span>复制粘贴剪切删除</span><span>),</span><span>而</span><span>apollo</span><span>到目前这个版本并没有给出</span><span>menu</span><span>和</span><span>toolbar</span><span>之类的组件</span><span>,</span><span>不过在</span><span>desktop2.0</span><span>可以不需要这些东西了吧</span><span>.</span></p>
<p><span>现在的关键问题是我们如何打开和保存一个文件</span><span>,</span><span>幸运的是在这个版本中</span><span>,adobe</span><span>已经给出了</span><span>file io api,</span><span>在</span><span>adobe</span><span>提供的</span><span>Apollo for Adobe Flex Developers</span><span>一书中第</span><span>4</span><span>章做了较详细的介绍</span><span>.</span><span>我也简单说一下</span><span>,</span><span>如果想做更多的了解请参见</span><span>:</span></p>
<p><span><a href="http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html">http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html</a></span></p>
<p>&nbsp;</p>
<p><span>我们需要声明一个</span><span>File</span><span>对象</span><span>,</span><span>他将引用一个文件</span><span>,</span><span>这和</span><span>java,c#</span><span>的方式很相似<br></p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_45_303_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_303_Open_Text.style.display='none'; Codehighlighter1_45_303_Closed_Image.style.display='inline'; Codehighlighter1_45_303_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_45_303_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_303_Closed_Text.style.display='none'; Codehighlighter1_45_303_Open_Image.style.display='inline'; Codehighlighter1_45_303_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;readText(name:String):String</span><span id=Codehighlighter1_45_303_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_45_303_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;File.appResourceDirectory;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;file.resolve(name);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;stream:FileStream&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;FileStream();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.open(file,FileMode.READ);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;txt:String&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;stream.readUTFBytes(stream.bytesAvailable);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.close();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;txt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p>&nbsp; </p>
<p><span>这个函数的作用是从文本文件中读出文本</span><span>,</span><span>参数</span><span>name</span><span>是文本文件的路径</span><span>.file</span><span>的声明是</span></p>
<p><span>var file:File = File.appResourceDirectory;</span></p>
<p><span>File.appResourceDirectory</span><span>引用了一个默认的目录</span><span>,</span><span>这是在该工程的</span><span>bin</span><span>目录下</span><span>.</span><span>如果在</span><span>resolve</span><span>中只给出了文件名</span><span>,</span><span>那么他将在这个默认的目录下查找该文件</span><span>.</span><span>其中还包括了</span><span>:</span></p>
<p>&nbsp;</p>
<p><span>File.appResourceDirectory : application</span><span>被安装到的目录</span><span><br>File.currentDirectory : </span><span>顾名思义不翻译了</span> <span><br>File.desktopDirectory : </span><span>同上</span><span><br>File.documentsDirectory : </span><span>上边讲过，是文档文件夹</span><span><br>File.userDirectory : </span><span>这是用户的</span><span>home directory </span><span>例如在</span><span>Mac OS</span><span>上是</span><span> User/</span></p>
<p><span>然后</span><span>,</span><span>我们在初始化了一个</span><span>FileStream</span><span>对象</span><span>, FileStream</span><span>打开文件</span><span>.</span></p>
<p><span>stream.open(file,FileMode.READ);</span></p>
<p><span>第</span><span>2</span><span>个参数说明了打开方式</span><span>,</span><span>其中包括</span><span>:</span></p>
<p><span>FileMode.APPEND </span><span>只写模式，所有被写的数据都会附加到文件的最后</span><span> Upon opening, any nonexistent file is created.<br>FileMode.READ </span><span>只读模式，</span><span>file</span><span>必须存在</span> <span>（</span><span>missing files are not created).<br>FileMode.UPDATE </span><span>读写模式，数据可以写在文件的任何位置或者附加到尾部。</span><span>Upon opening, any nonexistent file is created.<br>FileMode.WRITE </span><span>只写模式，如果文件不存在，将会创建新的文件，如果存在将会被覆盖</span></p>
<p><span>于是调用</span><span>stream.readUTFBytes</span><span>可以按</span><span>UTF-8</span><span>编码读取文件</span><span>.</span></p>
<p><span>最后</span><span>stream.close();</span></p>
<p><span>这个没什么好说的</span><span>,</span><span>和</span><span>java,c#</span><span>都一个样子</span><span>.</span></p>
<p><span>同理还需要一个写文件的函数</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_55_226_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_226_Open_Text.style.display='none'; Codehighlighter1_55_226_Closed_Image.style.display='inline'; Codehighlighter1_55_226_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_55_226_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_226_Closed_Text.style.display='none'; Codehighlighter1_55_226_Open_Image.style.display='inline'; Codehighlighter1_55_226_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;writeText(name:String,txt:String):</span><span style="COLOR: #0000ff">void</span><span id=Codehighlighter1_55_226_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_55_226_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;file.resolve(name);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;stream:FileStream&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;FileStream();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.open(file,FileMode.WRITE);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.writeUTFBytes(txt);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.close();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
&nbsp;
<p><span>现在我们来用这</span><span>2</span><span>个函数来做一个简单的记事本</span><span>.</span></p>
<p><span>这里有一个问题</span><span>,</span><span>我们需要一个对话框</span><span>,</span><span>用来保存和打开文件</span><span>.</span><span>在</span><span>apollo sdk</span><span>中提供了这样的组件</span><span>,</span><span>打开</span><span>apollo_sdk_alpha1_031907.zip\samples\Apollo Components,</span><span>其下包括</span></p>
<p><span>DirectorySelectionPanel.mxml</span></p>
<p><span>FileOpenPanel.mxml</span></p>
<p><span>FileSavePanel.mxml</span></p>
<p><span>把后面</span><span>2</span><span>个添加到我们工程中</span><span>(</span><span>当然也可以直接粘代码</span><span>),</span><span>或许你需要做一写修改</span><span>,</span><span>比如把一下英文名字该成中文的</span><span>,</span><span>不过在</span><span>apollo</span><span>中显示中文效果不大理想</span><span>.</span><span>另外</span><span>,</span><span>还需要一写更改</span></p>
<p><span>[Bindable]<br></span><span>public var extensionFilterInfo:Array =<br></span><span><span>&nbsp;</span>[<br>&nbsp;&nbsp;&nbsp;</span><span>{ label: "All files", data: null },<br>&nbsp;&nbsp;&nbsp;</span><span>{ label: "Flex files", data: [ ".mxml", ".as" ]}<br></span><span><span>&nbsp;</span>];</span></p>
<p><span>这段代码可以在</span><span>FileOpenPanel.mxml</span><span>中找到，作用是一个</span><span>Filter,</span><span>除了有所有文件的选择外</span><span>,</span><span>就只能打开</span><span>.mxml</span><span>和</span><span>.as,</span><span>下面是我修改后的</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp; [Bindable]<br></span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>public var extensionFilterInfo:Array =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>[<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>{ label: "</span><span>所有文件</span><span>", data: null },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>{ label: "</span><span>文本文件</span><span>", data: [".txt"]}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>];</span></p>
<p><span>好了</span><span>,</span><span>我们应该怎么使用这</span><span>2</span><span>个组件呢</span><span>.</span><span>他们都包裹一个静态的函数</span><span>show,</span><span>原形如下</span></p>
<p><span>public static function show(directory:File = null):FileOpenPanel<br></span><span>{<br>&nbsp;&nbsp;&nbsp;</span><span>var panel:FileOpenPanel =</span><span>FileOpenPanel(PopUpManager.createPopUp(<br>&nbsp;&nbsp;&nbsp;</span><span>DisplayObject(mx.core.Application.application),</span><span>FileOpenPanel, true));<br></span><span><span>&nbsp;&nbsp; </span></span><span>PopUpManager.centerPopUp(panel);<br>&nbsp;&nbsp;&nbsp;</span><span>panel.setup(directory);<br>&nbsp;&nbsp;&nbsp;</span><span>return panel;<br></span><span>}</span></p>
<p><span>看起来有点象</span><span>Alert.</span><span>但是我们需要他返回一个文件的地址</span><span>,</span><span>应该怎么做呢</span><span>?</span><span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_35_243_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_243_Open_Text.style.display='none'; Codehighlighter1_35_243_Closed_Image.style.display='inline'; Codehighlighter1_35_243_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_35_243_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_243_Closed_Text.style.display='none'; Codehighlighter1_35_243_Open_Image.style.display='inline'; Codehighlighter1_35_243_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;OnClickOpen():</span><span style="COLOR: #0000ff">void</span><span id=Codehighlighter1_35_243_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_35_243_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;openDialog:FileOpenPanel&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FileOpenPanel.show();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openDialog.addEventListener(FileEvent.SELECT,&nbsp;fileOpenPanel_selectHandler);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>这是打开按钮的</span><span>OnClickOpen()</span><span>函数</span><span>,</span><span>我们使用</span><span>FileOpenPanel.show()</span><span>显示出对话框</span><span>,</span><span>并且获得了他的一个引用</span><span>,</span><span>使用</span><span>addEventListener</span><span>添加了一个事件监听器</span><span>,FileEvent</span><span>定义了事件的类型</span><span>,</span><span>其中包括</span><span>SELECT(</span><span>选择</span><span>),CLOSE(</span><span>关闭</span><span>),CLOSING,CANCEL.</span></p>
<p><span>当触发</span><span>select</span><span>事件后</span><span>(</span><span>就是选中文件点确定</span><span>),</span><span>将交给</span><span>fileOpenPanel_selectHandler</span><span>函数处理</span><span>,</span><span>这和</span><span>java</span><span>一模一样</span><span>.</span><span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13