- 博客(269)
- 资源 (5)
- 收藏
- 关注
原创 属性,构造函数,枚举
<br /><br />如下示例类public class People{ public bool View { get; set; } public bool Create { get; set; } public bool Edit { get; set; } public bool Delete { get; set; }}<br /><br />1.以属性填充方式进行<br />public void Test1(){ Peo
2010-06-10 23:08:00
775
原创 .net 4.0新特性-CountDownEvent
<br />也称为反Semaphore 作用:统计其他线程结束工作,监听计数为0时,触发操作.<br />与Semaphore形成对比,Semaphore有最大资源数,当计数为0时(即资源不够用时)则阻塞线程<br />1.Semaphore<br />初始化时,资源为0,调用Release方法释放资源using System;using System.Threading;public class Example{ // A semaphore that simulates a l
2010-06-10 12:08:00
1003
原创 .net 4.0新特性-自旋锁(SpinLock)
<br />概念:<br />http://baike.baidu.com/view/1250961.htm?fr=ala0_1_1<br />http://blog.csdn.net/wzhwho/archive/2009/05/15/4190090.aspx<br />参考:<br />http://msdn.microsoft.com/zh-cn/library/dd460716.aspx<br />http://www.cnblogs.com/lengleng3898/archive/2010/04
2010-06-10 10:08:00
1169
原创 .net 4.0新特性-延迟初始化:Lazy(转),ThreadLocal<T>
<br />感谢作者<br />http://www.cnblogs.com/anytao/archive/2009/10/29/must_net_33.html<br />http://www.cnblogs.com/me-sa/archive/2010/05/25/lazy-initialization-fx4.html<br />.net也有ThreadLocal了<br />http://www.cnblogs.com/tmrcp/archive/2009/07/17/1525506.html<br
2010-06-09 22:09:00
779
原创 .net 4.0新特性-并行编程(转)
<br />感谢作者,辛苦:)<br />.NET 4 并行(多核)编程系列之一入门介绍<br />.NET 4 并行(多核)编程系列之二 从Task开始<br />.NET 4 并行(多核)编程系列之三 从Task的取消<br />.NET 4 并行(多核)编程系列之四 Task的休眠<br />.NET 并行(多核)编程系列之五 Task执行和异常处理
2010-06-09 19:09:00
774
原创 .net 4.0新特性-tuple
<br />功能:动态返回数据结构,可当临时数据结构class Program{ static void Main(string[] args) { //Before new People() {Name = "Terry", Age = 24}; //Now,Create Dynamic struct var data = Tuple.Create("Terry", 24); }}public
2010-06-09 17:09:00
745
原创 Win32 Api(显示程序系统菜单)
即在程序标题栏上右键时弹出的菜单此菜单会根据窗体的状态而不同,如最大化状态时则如上图1.GetSystemMenuThe GetSystemMenu function allows the application to access the window menu (also known as the system menu or the control menu) for copyin
2010-05-18 14:09:00
1582
1
原创 WPF技巧(5)元素的加载与卸载(Loaded and Unloaded)
FrameworkElement有两个初始化和一个卸载事件 还是以代码来示例一.Initialized触发条件(元素拥有容器,并初始化)当元素实例化以后并被加入到逻辑树中时会触发此事件,此事件可以获取到元素的初始值public Demo1(){ InitializeComponent(); panel = new StackPanel(); Bu
2010-05-17 12:08:00
1685
原创 如何用PV原语实现进程间的互斥与同步(转载)
PV原语的含义 P操作和V操作是不可中断的程序段,称为原语。PV原语及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的。信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数。 P原语操作的动作是: (1)sem减1; (2)若sem减1后仍大于或等于零,则进程继续执行; (3)若sem减1后小于零
2010-05-15 18:07:00
3256
原创 读写锁操作(ReaderWriterLockSlim)
(1)static void WriterMethod(object writer){ Console.WriteLine("Writer {0} acquired the lock", writer); for (int i = 0; i < items.Count; i++) { items[i]++; C
2010-05-13 15:09:00
1345
原创 非递归遍历
class Program{ static void Main(string[] args) { } //TreeNode node1 = new TreeNode(); //node1.Name = "a"; //IList list = new List(); //for
2010-05-13 13:09:00
674
原创 WPF技巧(4)使用Visual元素
Visual继承自DependencyObject,属于WPF所有控件类的基类,其大多数以Visual开头的属性均受保护. Visual无法直接使用,可以看到Panel添加的元素最低级别为UIElement. 添加Visual对象必须使用AddVisualChild方法等一系列方法,(与FrameworkElement区分开来)
2010-05-07 15:09:00
827
原创 WPF技巧(3)监测属性变更
public Window1(){ InitializeComponent(); this.TargetUpdated += new EventHandlerDataTransferEventArgs>(Window1_TargetUpdated); this.SourceUpdated += new EventHandlerDataTransferEve
2010-05-07 14:09:00
1215
原创 WPF技巧(2)绑定到附加属性
Button Content="{Binding Path=(DockPanel.Dock),ElementName=Element_ListBox,Mode=TwoWay}"> 是可以绑定附加属性的,记得给两侧加括号
2010-05-07 11:09:00
2072
原创 WPF技巧(1)异步绑定
与大家共勉 当属性值填充好后,与该属性绑定的界面才会开始加载(属性绑定优于控件加载) 这个技巧很简单,但却影响着运行的速度.以下为测试 1.定义一个集合属性private IListstring> _list;public IListstring> List{ get { if (_list == null) {
2010-04-26 22:07:00
1964
2
原创 wpf单容器中的Chrome
Chrome有点类似于用GDI+画图一般,除了模板,也可以使用DrawingContext对象来画图. WPF内置的很多控件都是如此实现的,虽然麻烦了一些,可能是为了提升性能考虑. 其方式与定义样式模板差不多,只不过换成代码形式了. 1.先定义控件不同状态下的颜色,如private static SolidColorBrush CommonDisabledBackgroundOverlay
2010-04-07 12:56:00
753
原创 wpf 控件开发基础(6) -单一容器(Decorator)
其实这部分的文章已经很多了,写下来方便自己查询. wpf内置提供了很多容器(Panel),容器分为多容器和单容器.下面介绍单容器.内置的单容器,大家最熟悉的如Border,其作用用于装饰容器内的元素,单一容器继承自Decorator,下面来看一个未使用装饰器的例子. Window x:Class="WPFControlTutorialPart6_WPFApp.Window1"
2010-04-06 23:56:00
891
原创 中序线索二叉树算法
参考:http://www.cnblogs.com/yuchen198112/archive/2007/01/02/610058.html 理解下面两句话 (1)若上次访问到的结点的右指针为空,则将当前访问到的结点序号填入,并置右标志为1。(2)若当前访问到的结点的左指针为空,则将上次访问到的结点序号填入,并置左标志为1。 先将中序列算出来 DBHEIAFCG 先理解第一句话 1.若上
2010-03-31 13:56:00
725
原创 nhibernate 抓取策略
三种方式 1. 默认策略 select,即默认的延迟加载,一条一条的取(记得设置lazy为ture,不然很惨,有几条数据就会执行几条sql语句) 2.join 连接表,一句话搞定,但速度慢 3.subselected子表查询,使用in来查询 4.batch-size 批次抓取 即一次自定语取一定数据
2010-03-15 11:08:00
585
原创 Caliburn v2 变更-Presenter->Screen
这个变动影响全局(作者就是很喜欢改名字…后面还有)参考此http://www.cnblogs.com/Clingingboy/archive/2009/12/28/1634054.html 原命名空间Caliburn.PresentationFramework.ApplicationModel 现命名空间Caliburn.PresentationFramework.Scr
2010-03-08 15:08:00
547
原创 Caliburn v2 变更-启动初始化
基本也是属于重构代码,但清晰很多CaliburnFramework .Configure() .With.Core() .With.PresentationFramework() .Start();配置容器,加载核心服务,然后加载WPF服务,然后启动 IModuleHook可以将外部模块加到配置当中,即用于扩展而用两种
2010-03-08 14:08:00
427
原创 Caliburn v2 变更-模块化
看下这个是什么东西. 主要功能是把相关服务组合放在一个Module里面 ModuleBase和CaliburnModule都没什么东西,ConventionalModule是关键实现,CoreConfiguration是ConventionalModule的简化版本,在使用过程中填充CoreConfiguration就可做掉一切 核心Service 一目了然,此接口仅是一个
2010-03-08 14:08:00
444
原创 Caliburn v2 变更-容器
做记录… 对容器进行了重构,命名空间进行了调整,为Caliburn.Core.IoC 添加了IRegistry接口,用于注册,之前没有接口用于注册,只能是从容器中取/// /// Implemented by a class that can register components with an IoC container./// public interface IR
2010-03-08 10:08:00
552
原创 wpf控件开发基础(5) -依赖属性实践
知识回顾 接上篇,回顾这三篇讲了什么东西 首先说明了属性的现存问题,然后介绍了依赖属性的基本用法及其解决方案,由于依赖属性以静态属性的方式存在,进而又介绍了可重写的属性元数据的使用.这是以上三篇所说明的问题.当然依赖属性的特性依然没有说完整.这两天也一直在想依赖属性,然后就是头疼,呵呵.由于WPF的依赖属性系统与整体功能都有关联,所以接下来等讲到某个特性的时候然后再来讲依赖属性.这篇我们来
2010-02-03 12:49:00
1905
5
原创 wpf控件开发基础(4) -属性系统(3)
知识回顾 接上篇,上篇我们真正接触到了依赖属性的用法,以及依赖属性的属性元数据的用法,并且也实实在在地解决了之前第二篇提到的一系列问题.来回顾一下 属性默认值 属性变更通知 属性强制回调 本篇将继续讨论上一篇提到的问题,主题依然是属性元数据. 内容概要 属性值验证 默认值问题 依赖属性的不变与可变 属性元数据的唯一性 重写属性元数据 改写属性元数据 一.属性值验证 依赖属性具备属性验证
2010-02-02 15:49:00
664
原创 wpf控件开发基础(3) -属性系统(2)
上篇说明了属性存在的一系列问题. 属性默认值,可以保证属性的有效性. 属性验证有效性,可以对输入的属性进行校验 属性强制回调, 即不管属性有无发生变化,都要做出通知. 属性变更通知,当属性发生变化可以通知程序作出一系列的处理. 这里还没WPF什么事,我们来看看依赖属性是如何解决以上问题的. 内容概要 定义第一个最简单的依赖属性 依赖属性值基本操作 属性包装器 属性元
2010-02-01 22:49:00
722
原创 wpf控件开发基础(2) -属性系统(1)
距离上篇写的时间有1年多了.wpf太大,写的东西实在太多,我将依然围绕着自定义控件来展开与其相关的技术点. 也欢迎大家参与讨论.这篇我们将要讨论的是WPF依赖属性,接触过的朋友应该对其有所了解,但在我们讲WPF依赖属性之前,我们来看看在WPF出现之前.net中的属性是如何使用的. 普遍存在的属性问题 c#基本属性 ASP.NET自定义控件属性 WinForm自定义控件属性
2010-02-01 16:49:00
834
原创 MFC笔记(1)
只为记忆更加深刻 如果程序变的不是非常枯燥乏味,学的人就会有兴趣很多,学ui就是一种.虽然学ui只是起步,但足够增加对学习的信心,也为后续打下基础. 有些人喜欢先探秘,比如先看深入浅出浅出MFC,我一直以来的想法是先学后用,如果连用都用不好,我想我也并不具备设计框架的能力.只有知道框架要做什么事情以后,自然自己心中会提出疑问. Hello World程序 // Define a w
2010-01-25 09:49:00
450
原创 MFC笔记(2)菜单
菜单以资源的形式出现,并以框架内置固定的位置出现 首先在资源面板里创建菜单 载入菜单 1.在Create方法中传入菜单 IDR_MAINFRAME为资源的Id,MAKEINTRESOURCE用于转换资源this->Create(NULL,_T("Hello MFC"),WS_POPUPWINDOW,rectDefault,NULL,MAKEINTRESOURCE(IDR_MAI
2010-01-22 16:49:00
458
原创 Caliburn笔记-Dependent Action(wpf框架)
http://caliburn.codeplex.com/wikipage?title=Dependent%20Actions&referringTitle=Documentation 这一部分功能也属于过滤器.再来看两个接口FilterManager会在构造函数中,对实现该接口的Filter进行初始化public interface IInitializable : IFil
2009-12-30 17:49:00
537
原创 Caliburn笔记-过滤器管理(IFilterManager)(wpf框架)
过滤器用于装饰对象本身和对象中的方法.如下图 具体介绍可见此 http://caliburn.codeplex.com/wikipage?title=Filters&referringTitle=Documentation IFilterManager IFilterManager接口为过滤器管理器,用于存放过滤器接口,每个Action都有一个过滤器管理器 1.IRescu
2009-12-30 13:49:00
756
原创 Caliburn笔记-依赖注入容器(wpf框架)
参考与此http://caliburn.codeplex.com/wikipage?title=Auto-Registering%20Components&referringTitle=Documentation 此为基础,看了没用,不看不行…了解下注册流程. 注册组件,差不多离不开这几种模式 手动注册 元数据标签注册 外部dll加载注册 1.内置服务则用手动注册. 2.挂元
2009-12-30 11:49:00
1387
原创 Caliburn笔记-Action简写(wpf框架)
http://caliburn.codeplex.com/wikipage?title=Action%20Basics&referringTitle=Documentationpublic void Demo(){ MessageBox.Show("hello");}1.传递方法Button Content="Demo" cal:Message.At
2009-12-30 10:49:00
731
原创 Caliburn笔记-Presenter与View(视图策略)(wpf框架)
参考:http://caliburn.codeplex.com/wikipage?title=View%20Strategies&referringTitle=Documentation 来看下presenter是怎么与view分开的,calbiburn把view和presenter分的很彻底,view很干净,presenter也很干净,几乎感觉不到他们两有关系.这一点感觉设计的非
2009-12-28 23:10:00
736
原创 Caliburn笔记-Presenter的管理(wpf框架)
回头来看caliburn是如何初始化程序界面 CaliburnApplication CaliburnApplication继承自WPF的Application类,其初始化了caliburn的接口,同时提供了一个窗口管理的接口IWindowManager,与prism框架不同这个shell是非强制性的 一.初始化 ////// Raises the event./// //
2009-12-28 14:10:00
689
原创 Caliburn笔记-Presenter(wpf框架)
又是MVP... 先来看下图,MetadataContainer已经知道是元数据的功能了。PresenterBase继承了IExtendedPresenter接口,所以重点看这个接口. 参考于此:http://caliburn.codeplex.com/wikipage?title=IPresenter%20Component%20Model&referringTitle=Docu
2009-12-28 11:11:00
642
原创 Caliburn笔记-消息触发器(wpf框架)
参考此http://caliburn.codeplex.com/wikipage?title=Message%20Triggers&referringTitle=Documentation 先看下面一段xamlButton Content="Divide (Trigger Collection w/ Explicit Parameters)"> cal:Message.Tri
2009-12-25 15:11:00
707
原创 Caliburn笔记-方法(IMethod)的创建(wpf框架)
为了适应框架的需要,对原生的MethodInfo进行了改造,如下图 我们可以看到,主要的功能点是允许方法可以进行异步操作.其次IMethod也继承了IMetadataContainer接口,在方法上使用元数据也非常普遍.如下为默认实现的抽象类/// /// A base class for implementations./// private abstract cla
2009-12-25 11:11:00
579
原创 Caliburn笔记-Action的创建(wpf框架)
若一个对象被设置成为DataContext,该对象的方法称之为Action,caliburn通过附加属性来绑定这些Action,首先则需要获取绑定对象的方法.如下示例对象,则有4个方法.[Rescue("GeneralRescue")]public class Calculator{ //Note: This rescue catches exceptions t
2009-12-25 11:11:00
683
原创 Caliburn笔记-元数据(Metadata)管理(wpf框架)
在.net中允许我们使用元数据(即Attribute),在使用Action时,结合元数据可以为框架功能提供一些便利. caliburn提供了很多的元数据,其皆继承自IMetadata接口,该接口即一个空元数据标记接口而已,继承此接口的元数据则表明为属于caliburn功能范围内的元数据,方便管理. IMetadataContainer接口提供了对IMetadata的管理 M
2009-12-25 10:11:00
749
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人