
2009年2月27日
1
class Program
2
{
3
static void Main(string[] args)
4
{
5
//异步委托方法一
6
Func<int, int> func = new Func<int, int>(Square);
7
IAsyncResult ar1= func.BeginInvoke(10, null, null);
8
while (!ar1.IsCompleted)
9
Console.WriteLine(func.EndInvoke(ar1));
10
11
//异步委托方法二
12
IAsyncResult ar2 = func.BeginInvoke(20, null, null);
13
ar2.AsyncWaitHandle.WaitOne();
14
Console.WriteLine(func.EndInvoke(ar2));
15
16
//异步委托方法三
17
IAsyncResult ar3 = func.BeginInvoke(30,
18
result =>
19
{
20
if (result.IsCompleted)
21
Console.WriteLine(func.EndInvoke(result));
22
},
23
func);
24
25
//后台线程方法
26
BackgroundWorker worker = new BackgroundWorker();
27
worker.DoWork += (s,e) => e.Result = Square((int)e.Argument);
28
worker.RunWorkerCompleted += (s,e) => Console.WriteLine(e.Result);
29
worker.RunWorkerAsync(40);
30
31
//多线程方法
32
Thread thread = new Thread(new ThreadStart(() => Console.WriteLine(Square(50))));
33
thread.Start();
34
35
Console.ReadLine();
36
}
37
38
//可以为耗时的操作
39
private static int Square(int x)
40
{
41
return x * x;
42
}
43
}
http://files.cnblogs.com/guozili/CodeTimer.rar
1.15.4寸 1280*800,2.52的点距 用了4年,识别文字比看书还辛苦,把我的视力搞的严重下降了,还是在公司用台式机爽,2.9的点距,中距离看着不累。
2.现在的14.1 16:9 用1366的分辨率太不爽了,搞的我都不知道怎么换笔记本了,如果14.1 1280 * 720的分辨率就完美了,刚好是720p。
3.我们这里有一台搞图形设计的32寸的专业显示器,但是色彩和字迹的清晰度太爽了,隔着1米外都看的很清楚很亮丽。
4.另外我觉得笔记本应该向高对比度,高色彩,点距大但是清晰发展,而不是向高分辨率,高亮度。
posted @
2009-02-27 17:45 guozili@163.com 阅读(32) |
评论 (0) |
编辑

2008年11月23日
接上篇“基于Silverlight的精简框架之解析”,最近研究了ExtJs,发现其虽然外观很酷,但是开发难度比较大,大量JS不易维护,于是乎想起基于EasySL框架,实现ExtJs的部分功能。比较起来SL的UI和异步机制很容易实现,特别是SL类似于winform的控件开发方式,给开发丰富的RIA提供强大的支持。
一、此次主要是展示一个后台管理UI:
1. 登陆、列表、分页、添加、修改、删除,使用了双向绑定机制,界面元素和实体进行绑定,自动对界面进行取值赋值;
2. 其异步数据交互应用了此框架(EasySL)的简洁请求方式,只需传方法名和参数名到有同样方法签名的业务层,至于数据层暂时用的是假数据,推荐用db4o、linq to sql或SubSonic。
二、本次升级主要加入了一些常用的实用控件:
1. ImageButton: 你只需赋值normal、hover、click、enable四张图片即可
2. VisualPager: 原理和传统分页控件差不多,实现了比较久,主要是翻页的效果
3. Alert: 使用Window.Alert(string msg)
4. Confirm: 使用Window.Confirm(string msg, OnConfirm onConfirm)
5. Loading: 使用Window.ShowLoading(string msg)和Window.HideLoading()
6. DialogPanel: 使用Window.ShowOpPanel(string title, UserControl panel, OnSubmit onSubmit)
7. DragHelper: 提供拖拽支持
三、一些实现方法还不是很好,后面将完善代码,欢迎大家加入到SL的开发行列一起讨论
1. 预览地址:http://hz88a8.hz88a.wxdlpt.com/EasySL.htm
2. 且源代码:http://files.cnblogs.com/guozili/EasySL.zip
四、附:应用截图
1.用户登陆
.jpg)
2.验证用户(loading control)
.jpg)
3.加载第一页数据
.jpg)
4.产品列表(visual pager control)
.jpg)
5.确认删除(confirm control)
.jpg)
6.添加产品(dialog panel control)
.jpg)
7.升级产品(two-way bind)
.jpg)
8.警告(Alert control)
.jpg)
posted @
2008-11-23 19:01 guozili@163.com 阅读(3711) |
评论 (46) |
编辑

2008年11月7日
接上篇“基于Silverlight的精简框架之介绍”,Silverlight的数据请求需要架设wcf、webservice或者webclient,而且中间数据需要序列化和反序列化,或者自己用linq解析,易用性不是很强,且比较麻烦,基于目前还没有统一和规范的silverlight开发模式,所以从五六个自己做过的基于Silverlight的中型项目,抽出核型代码形成一套精简框架,方便调用,扩充和分布式部署。
一、框架整体分为5块(界面、服务端、业务逻辑层、数据访问层、通用层),包含15个项目,通过配置web.config,其中的Remoting服务端可以去掉,变为界面层直接访问逻辑层.
可以参考下面此图:

二、下面是数据请求的过程
1.界面层通过Task发送Request请求,最终调用了HttpRequest请求一个httpHandle
2.httpHandle会截取到此请求,发送给remotingServer处理,
3.server会把此请求的数据直接发给业务逻辑层处理,
4.业务逻辑层会进行反序列化,提取请求中方法名和参数,通过method.invoke(DALImpl,Paras)动态执行数据层相应的方法
5.把method.invoke返回的实体装载到Response里,Response.ToJson()返回json结果
6.返回到界面层时会进行反序列化,还原Response,Response.data as entity即是数据层返回的entity
可以参考下面此图:

三、Core里面的核心3个对象:



下一篇将讲解使用的3种方式(Requestor、Task、TaskManager)
且源代码:http://files.cnblogs.com/guozili/EasySL.zip
posted @
2008-11-07 16:25 guozili@163.com 阅读(1855) |
评论 (1) |
编辑

2008年11月6日
Silverlight的数据请求需要架设wcf、webservice或者webclient,而且中间数据需要序列化和反序列化,或者自己用linq解析,易用性不是很强,且比较麻烦,基于目前还没有统一和规范的silverlight开发模式,所以从五六个自己做过的基于Silverlight的中型项目,抽出核型代码形成一套精简框架,方便调用,扩充和分布式部署。
项目文件说明:

EasySL.Controls 封装了一些基于Silverlight的自定义控件,目前还没加进来
EasySL.Core 请求数据,返回数据的json序列化和反序列化机制,较之webservice xml性能好些
EasySL.Core.SL 和上面一样,Silverlight项目用
EasySL.Data 数据访问层实现
EasySL.Data.Interface 数据访问层接口
EasySL.Entity 实体层
EasySL.Service 业务逻辑,数据加工,缓存处理
EasySL.Share 一些常用helper
EasySL.Server Remoting server
EasySL.UI Silverlight主控件
EasySL.Web asp.net主页面
部署方式:
1.web.config里设置ServerEnable为false,将不需要开启remoting server,由web层直接请求业务逻辑层(EasySL.Service)
2.web.config里设置ServerEnable为true,然后启动remoting server(EasySL.Server),
将由remoting server代理访问业务逻辑层,易于分布式部署
简单使用:
//UI层page.xmal.cs
//初始化一个task
this.getProductListTask = new Task();
//初始化请求数据
getProductListTask.BeforeStart += new EventHandler<EventArgs>(getProductListTask_BeforeStart);
//回调时更新界面
getProductListTask.Callback += new GetDataAsyncCompleted(GetProductListCallBack);
void getProductListTask_BeforeStart(object sender, EventArgs e)
{
Task task = sender as Task;
task.MethodName = "GetProductList"; //对应于数据层的方法名
task.ReturnType = typeof(List<Product>); //对应于数据层的返回类型
task.SetParameter("count", int.Parse(this.count.Text)); //对应于数据层的方法的参数
}
public void GetProductListCallBack(Response response)
{
List<Product> product = reponse.data as List<Product>;
//update UI.
}
//所以你需要在数据访问层增加对应的方法:
public List<Product> GetProductList(int count)
{
//get data from xml or database
}
一些实现方法还不是很好,后面将完善代码,增加注释,发布新的版本,欢迎大家讨论
附上此框架的一个应用:
click
且源代码:
http://files.cnblogs.com/guozili/EasySL.zip
posted @
2008-11-06 16:24 guozili@163.com 阅读(2107) |
评论 (14) |
编辑

2008年4月30日
摘要: 使用的是SL bete2,cpu占用快于js,差于flash,参考了jQuery实例:图片展示效果 的思想实现了一些网站首页的图片新闻展示效果。大概解析下(具体请参考代码注释):图片容器包括图片、底部文字、数字圆圈3部分和对应的3个动画,其定位和动画位移都是通过改变其Canvas.Top或Left属性,图片hover时通过改变DoubleAnimation.From和To属性实现位移动画,这些基础...
阅读全文
posted @
2008-04-30 10:31 guozili@163.com 阅读(3000) |
评论 (14) |
编辑

2008年4月23日
摘要: 接上一篇:js应用-实现博客个性主页布局拖拽功能 已改造成JQuery插件形式,并新增了一些效果,由于jquery强大的DOM选择器和一些封装的效果,使得代码更加清晰和精简。引用上一篇:Jquery的Interface elements for jQuery里面的拖拽布局存在一些bug,效率也比较低,GoogleUI google_drag.js有些乱,不是很容易理解,Discuz!NT Spac...
阅读全文
posted @
2008-04-23 12:58 guozili@163.com 阅读(4995) |
评论 (13) |
编辑

2008年4月22日
摘要: Jquery的Interface elements for jQuery里面的拖拽布局存在一些bug,效率也比较低,GoogleUI google_drag.js有些乱,不是很容易理解,Discuz!NT Space代码满天飞,所以自己参考GoogleUI的思想,简化和优化了一些操作代码,实现了博客系统基本的拖拽布局的效果,暂时未考虑其他浏览器的兼容性问题。下一步准备改造成Jquery的插件形式,...
阅读全文
posted @
2008-04-22 10:43 guozili@163.com 阅读(4082) |
评论 (30) |
编辑

2008年3月7日
2008-3-8-今日又去面试了,碰到一题,回来仔细写了下,不知道是不是这样效率最好:

2008-3-7-最近又开始面试了,由于长期做NET应用,导致基础算法不清,错失很多良机,故回家补习,列出几例,以便面试临时必备:

如Combind(new int[]{1,3,5}, new int[]{2,4},c)则得到,1,2,3,4,5

如a,b,c,则Permute(0)则得到abc, acb, bac,.......所有组合



猫叫,主人醒来,老鼠逃
posted @
2008-03-07 14:42 guozili@163.com 阅读(2987) |
评论 (21) |
编辑

2007年6月22日
摘要: /Files/guozili/SiteOSFile2.rar模仿视频网站首页ajax分页,结合neverModules-slider +jquery form插件实现拖动滑动块进行AJAX分页,此方法较灵活,另外可用2.0里面的CallBack机制实现同样的功能,预览和代码请见下:(注释添加中.......)预览:代码:default.aspx<%@PageLanguage="C#"Auto...
阅读全文
posted @
2007-06-22 14:44 guozili@163.com 阅读(3067) |
评论 (9) |
编辑

2007年6月13日
最近在研究Interface elements for jQuery(http://interface.eyecon.ro/),此插件封装了一些拖拽效果,并且使用非常简单,能轻松实现拖拽排序、购物车、博客首页排版等UI,所以模仿和讯的图片排序做了一个简单样例:
预览:
代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Sortables demo - Interface plugin for jQuery</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="interface.js"></script>

<style type="text/css" media="all">
body

{
}{
background: #fff;
height: 100%;
font-family: Arial, Helvetica, sans-serif;
font-size: 10pt;
}
#sort1

{
}{
width: 350px;
height: 200px;
}
div img

{
}{
float: left;
width: 60px;
height: 60px;
margin:10px;
border:solid 3px #ccc;
}
.sorthelper

{
}{
background-color: #f5f5f5;
float: left;
border:4px solid #ccc;
}
.sortableactive

{
}{
}
.sortablehover

{
}{
}
</style>
</head>
<body>
<div id="sort1">
<img src="1.jpg" class="sortableitem" id="1" alt="1"/>
<img src="2.jpg" class="sortableitem" id="2" alt="2"/>
<img src="3.jpg" class="sortableitem" id="3" alt="3"/>
<img src="4.jpg" class="sortableitem" id="4" alt="4"/>
<img src="5.jpg" class="sortableitem" id="5" alt="5"/>
<img src="6.jpg" class="sortableitem" id="6" alt="6"/>

</div>
<div class="serializer">
<a href="#" onClick="serialize(); return false;" >提交排序</a>
</div>

<script type="text/javascript">
$(document).ready(

function ()
{
$('#sort1').Sortable(

{
accept : 'sortableitem', //拖拽元素class名
helperclass : 'sorthelper', //拖拽时投放位置的样式
activeclass : 'sortableactive', //拖拽时悬空时class
hoverclass : 'sortablehover', //拖拽时经过时class
opacity: 0.5, //拖拽时透明度
fx: 200, //拖拽时回位速度
revert: true,
floats: true,
tolerance: 'pointer',
onchange: changedata //拖拽状态改变时触发事件
}
)
}
);
function changedata()


{
}

function serialize(s)


{
serial = $.SortSerialize(s);
alert(serial.hash.replace(/&sort1\[\]=/g,",").replace("sort1[]=",""));

/**//*这里可使用jquery form插件ajax提交
(http://www.malsup.com/jquery/form/#code-samples)
使用也非常方便
*/
};
</script>
</body>
</html>
posted @
2007-06-13 11:15 guozili@163.com 阅读(3976) |
评论 (9) |
编辑