随笔分类 -  Windows Forms

应用AOP简化WinForm的异步操作——Spring.NET实现
摘要:此篇狗尾续狗,有炒现饭之嫌。但为了学习Spring.NET的AOP实现,同时也是响应前篇的读者,还是再选这个例子。这不,CCTV6又在放《失恋33天》,咱还写这个。Advice(通知)Spring.NET 使用标记接口 AopAlliance.Aop.IAdvice 来定义通知,这个接口又有四个直接的派生接口,还有两个间接地派生接口。Spring.Aop.IAfterReturningAdvice,定义方法执行之后的通知,通知的方法名为 AfterReturningSpring.Aop.IBeforeAdvice,定义所有的前置通知,还是一个标记接口Spring.Aop.IMethodBefo 阅读全文
posted @ 2011-12-25 22:43 Cn#工作室 阅读(2322) 评论(4) 推荐(0)
应用AOP简化WinForm的异步操作——EntLib PIAB实现
摘要:回首征途在上一篇《应用AOP简化WINFORM的异步操作——PostSharp实现》中,实现了通过AOP的方式隔离BackgroundWorker的调用。正如有朋友不倾向PostSharp的编译时代码织入方式,我也没在日常项目中使用过PostSharp。虽然问题可能不大,弃用它也只是重新编译一遍。但最近尝试Enterprise Library PIAB模块来实现相同的功能,还是发现了一些细节问题。一鼓作气与PostSharp不同,PIAB是以动态代理的方式来实现的。那么我们不能直接沿用Form中的代码,需要添加一个代理类来实现WorkThread。好吧,那么我们顺便引入MVP模式,通过Pres 阅读全文
posted @ 2011-12-02 00:48 Cn#工作室 阅读(2031) 评论(4) 推荐(2)
应用AOP简化WinForm的异步操作——PostSharp实现
摘要:起因从事WinForm的园友们一定经历过:当程序需要执行一个耗时的操作时,窗体进入假死状态,然后标题栏显示一个令用户绝望的“未响应”。不明真相的用户此时可能认为程序已死,强行关闭重启程序,然后重复这个噩梦。而通常此时程序实际上已经完成了一部分业务,造成数据丢失或者产生的结果与预期不一致。针对这个case,有很多方法来解决:Thread/ThreadPool/Control.Invoke/BackgroundWorker...下面以BackgroundWorker举例:假设程序现在要执行一个耗时的操作,为了不让用户肆意猛击界面,弹出一个带有loading动画的对话框block住主界面。我们把这个 阅读全文
posted @ 2011-11-19 02:40 Cn#工作室 阅读(3027) 评论(10) 推荐(4)