Hello World
Spiga

标签:事件

Why Java Sucks and C# Rocks(补2):标准事件模型

2010-07-13 01:17 by 老赵, 2144 visits
摘要:这又是一篇“补”,本来并不想写这方面的内容,因为这并非完全是“语言”相关。打个比方,如果您觉得.NET中的事件模型不友好,那么就按Java的做法去做咯(反之就做不到了)。不过既然正好看到有些涉及到这方面的讨论,那么我也趁此机会发表一下自己的看法吧。这次谈的是两种语言(其实在这个话题上也是平台)下“标准”的事件模型。“标准”二字意味着是被双方社区各自接受的模型,而不仅仅是为了实现“事件”这一理念而使用的任意做法。 阅读全文

F#中的异步及并行模式(2):反馈进度的事件(包含Twitter示例)

2010-03-07 16:33 by 老赵, 4479 visits
摘要:上一篇文章中谈到,“异步CPU并行”与“异步I/O并行”两个模式的限制之一便是无法通知组合操作的进度或结果。在这篇文章中,我们讲关注一个常见的异步模式:反馈进度的事件(Reporting Progress with Events),这是一种用于强大而优雅的做法,用于在某个边界之后对并行的执行过程加以封装,并同时汇报执行的结果或是进度。在文章最后,我们会使用这个设计模式开发一个示例,从Twitter中获取一系列记录。 阅读全文

趣味编程:Functional Reactive Programming(参考答案)

2009-09-23 02:45 by 老赵, 11284 visits
摘要:初见Functinal Reactive Programming时,它的编程方式让我大开了眼界,居然可以用这种方式来操作和控制事件。虽然从技术角度来说,要实现这种方式并不是非常困难,甚至颇为有趣。因此我把它当作一次“趣味编程”。不过,这次的结果似乎让我对API设计有了一些新的体会,我打算明天再来总结一下。今天,我们先关注原题的解决方式。 阅读全文

趣味编程:将事件视为对象(参考答案)

2009-09-17 01:48 by 老赵, 11359 visits
摘要:这次我们是要编写一个DelegateEvent对象,提供它AddHandler和RemoveHandler的实现。事实上,在之前还有一篇文章中,我们搞了一个人模狗样的构造方式,但是它往往不适合用于实际使用过程中。因此,其实DelegateEvent最关键的地方还是各种不同的“构造方式”,使它可以用于各种情况。 阅读全文

基于DelegateEvent创建第一个IEvent对象

2009-09-11 05:47 by 老赵, 11027 visits
摘要:继续和“事件即对象”打交道。我们之前提到过两个“趣味编程”:DelegateEvent与Functional Reactive Programming,现在我们在它们两者之间架起一座桥梁。也就是说,我们要从一个DelegateEvent对象创建一个IEvent对象出来。这样,您就可以把它作为第一个IEvent对象,继续尝试Functional Reactive Programming了。 阅读全文

趣味编程:Functional Reactive Programming

2009-09-10 04:26 by 老赵, 11587 visits
摘要:基于事件的编程再常见不过了,尤其是在和UI相关的WinForm,WPF,Silverlight开发方面。把事件作为一等公民看待之后,我们可以实现一些较为“特别”的编程模型,例如Functional Reactive Programming。这是一种较为优雅的基于事件的处理方式,适合一些如交互式动画,自动控制方面的工作。即使平时不太常见,我想作为一个“尝试”或“练习”也是非常合适的。那么我们就学习F#的类库,为C#也设计一套这样的功能吧。 阅读全文

趣味编程:将事件视为对象

2009-09-09 05:11 by 老赵, 12097 visits
摘要:如果一个语言(平台)把事件视为对象,则表明它把“事件”作为了语言的一等公民来对待。这可以有效地提高语言的抽象能力,由于.NET本身无法将事件作为单个对象处理,因此在某些时候就会束手束脚,也难以引入一些特别的编程模型。前一篇文章中我们提出了一个糊弄人的解决方案。而这次,不妨由您来试试看如何给出一个更好的实现。 阅读全文

把事件当作对象进行传递

2009-09-07 09:20 by 老赵, 5882 visits
摘要:最近在琢磨一些事情,和API设计有关。API设计在很多时候是和语言特性有关的,因此如Java这样的语言,在API设计时会处处受到压抑。而C#就能够出现如Moq或Fluent NHIbernate这样的项目。同样,F#能够开发出FsTest,Scala号称Scalable Language,都是依靠着丰富的语言特性。不过,最近在使用C#的时候鼻子上也碰了一点灰,这是因为我发现“事件”这个东西没法作为对象进行传递。 阅读全文
1
使用Live Messenger联系我