2011年10月19日

摘要: 当你设计一个应用程序时,你可能想使用一些需要长时间运行的代码,而又不中继当前正在进行的工作。一个方法是使用线程,将这个工作交由一个线程去执行,如果这些代码在运行过程中发生了错误,它可能会影响所在进程空间的所有线程。第二个方法是建立一个子进程,由这个子进程完成所需工作,这样子进程代码的错误不会影响到父进程的执行。子进程与父进程之间可以通过动态数据交换(DDE)、OLE、管道、邮件槽等进行通信,使用内存映射文件是最便利的方法之一。当前子进程终止后,子进程句柄变为有信号,父进程可使用 WaitForSingleObject 来等待子进程退出,这样父进程就可使用 GetExitCodeProcess 阅读全文

posted @ 2011-10-19 11:30 leon_ALiang 阅读(1217) 评论(0) 推荐(0) 编辑


2011年10月16日

摘要: C#中怎么使用lock关键字?有哪些注意事项?先看MSDN的定义:lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。先来看看执行过程,代码示例如下:假设线程A先执行,线程B稍微慢一点。线程A执行到lock语句,判断obj是否已申请了互斥锁,判断依据是逐个与已存在的锁进行object.ReferenceEquals比较(此处未加证实),如果不存在,则申请一个新的互斥锁,这时线程A进入lock里面了。这时假设线程B启动了,而线程A还未执行完lock里面的代码。线程B执行到lock语句,检查到obj已经申请了互斥锁,于是等待;直到 阅读全文

posted @ 2011-10-16 21:12 leon_ALiang 阅读(945) 评论(0) 推荐(0) 编辑


2011年9月16日

摘要: http://www.cnblogs.com/jimson/archive/2011/01/04/1925652.html 阅读全文

posted @ 2011-09-16 18:30 leon_ALiang 阅读(140) 评论(0) 推荐(0) 编辑


2011年8月23日

摘要: 1.UIElement 最轻量级的基类,他支持Layout、Input、Focus、Events。2.FrameworkElement 从UIElement派生增加了支持Style、tooltip、context menu,它是逻辑树的一部分,支持数据绑定、资源查找。3.Control 最常见的控件基类,支持模板和前景颜色、背景颜色、字体。4.ContentControl 支持Content属性,通常用于简单的内容容器。5.HeaderedContentControl 支持Content和Header属性,用于Header属性的扩展内容,比如:Expander,TabControl,Group 阅读全文

posted @ 2011-08-23 18:47 leon_ALiang 阅读(803) 评论(0) 推荐(0) 编辑


2011年8月19日

摘要: 在以前编程中遇到lock问题总是使用lock(this)一锁了之,出问题后翻看MSDN突然发现下面几行字:通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:如果实例可以被公共访问,将出现C# lock this问题。如果 MyType 可以被公共访问,将出现 lock (typeof (MyType)) 问题。由于进程中使用同一字符串的任何其他代码将共享同一个锁,所以出现 lock(“myLock”) 问题。来看看C# lock 阅读全文

posted @ 2011-08-19 15:41 leon_ALiang 阅读(2707) 评论(0) 推荐(0) 编辑

摘要: 在.Net中,string类型的对象一旦创建即不可修改string是一种很特殊的数据类型,它是引用类型,却经常表现出值类型的特性。在编译以及运行时,.Net都对它做了一些优化工作,正式这些优化工作有时会迷惑编程人员1> 字符串恒定字符串对象在创建后,尽管从语法上看您似乎可以更改其内容,但事实上并不可行。 例如,编写此代码时,编译器实际上会创建一个新字符串对象来保存新的字符序列,且新对象将赋给 b。 然后字符串“h”将适宜于垃圾回收。string b = "h";b += "ello";2>字符串驻留我们用以下2行代码来说明字符串的驻留现象: 阅读全文

posted @ 2011-08-19 15:38 leon_ALiang 阅读(339) 评论(0) 推荐(1) 编辑


2011年8月18日

摘要: private object CloneObject(object o) { Type t = o.GetType(); PropertyInfo[] properties = t.GetProperties(); Object p = t.InvokeMember("", System.Reflection.BindingFlags.CreateInstance, null, o, null); foreach (PropertyInfo pi in properties) { if (pi.CanWrite) { pi.SetValue(p, pi.GetValue(o 阅读全文

posted @ 2011-08-18 16:24 leon_ALiang 阅读(206) 评论(0) 推荐(0) 编辑


2011年6月2日

摘要: 敏捷开发不是一种软件开发技术敏捷开发是一种软件开发态度敏捷开发的适用场景是在:复杂多变的需求或非典型的不确定型需求如果是非常明确的需求,不合适适用敏捷开发 阅读全文

posted @ 2011-06-02 15:01 leon_ALiang 阅读(246) 评论(0) 推荐(0) 编辑


2010年12月15日

摘要: 今天code的时候碰到一个问题,记录一下:主线程在调用一个异步的操作时,需要这个异步操作进入某个特定状态,主线程才可以继续往下执行。(此时,并不是指这个异步操作执行完毕,因为再异步操作时会调用回调函数,不停给主线程返回数据。我不是我想说的重点,就不罗嗦了... ...)此时,可用如下操作:然后,调用该异步操作后,加一句 operationCompletionEvent.WaitOne();"ManualResetEvent"是多线程时常用的事件操作。PS:这是小弟的第一篇博客,时间关系也没有好好整理,希望可以坚持下去。。。。。。 阅读全文

posted @ 2010-12-15 16:02 leon_ALiang 阅读(1534) 评论(0) 推荐(0) 编辑


Copyright © 2024 leon_ALiang
Powered by .NET 8.0 on Kubernetes