Language:C,C++,.NET Framework(C#)
Thinking:Design Pattern,Algorithm,WPF,Windows Internals
Database:SQLServer,Oracle,MySQL,PostSQL
IT:MCITP,Exchange,Lync,Virtualization,CCNP
WPF, WCF, WWF, CARDSPACE,C#语法及测试
摘要:金科玉律:不要在UI线程上执行耗时的操作;不要在除了UI线程之外的其他线程上访问UI控件! NET1.1的BeginInvoke异步调用,需要准备3个方法:功能方法GetWebsiteLength,结果方法DownloadComplete,呼叫方法BeginInvoke! 但很不幸,在UI线程之外访问UI线程控件!调用失败。线程同步必须在线程所属进程的公共区域保留同步区,以此实现线程间的通讯。 ...
阅读全文
摘要:我们必须保持类型设计满足“高内聚,低耦合”,如此才能做到更好的代码重用。将应用拆解成组件类型可以实现高可维护性,并利于编码调试。 按钮点击、鼠标移动、键盘按键通常都是观察者模式的典型应用。封闭的类型对外发布事件,外部用用订阅类型的事件并编码实现在事件触发通知到系统后的操作,想想按钮Button类型来
阅读全文
摘要://http://www.cnblogs.com/JeffreySun/archive/2012/11/14/2770211.html //http://www.baqima.com/a/2628.html //http://www.cnblogs.com/yangqi/archive/2010/07/16/1778767.html //http://www.cnblogs.com/TianFan...
阅读全文
摘要:代理, 将方法作为另一方法的参数. 类似C里面的函数指针. using System; using System.Windows.Forms; using System.Threading; namespace Demo { public delegate void Greeting(string name); public class Demo { ...
阅读全文
摘要:using System; using System.Security.Principal; using System.Security.Permissions; using System.Security.Cryptography; namespace Demo { class MainClass { /// /// DESCryptoS...
阅读全文
摘要:1.枚举项和数值,字符串如何互相转换?2.结构和byte[]数组间如何互相转换? 这在通讯上普遍使用!3.位域在工控上DIO控制普遍使用,如何借鉴.OK,上代码!
阅读全文
摘要:using System; using System.Security.Principal; using System.Security.Permissions; namespace Demo { class MainClass { public static void Invoke (Action action) { ...
阅读全文
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace Interop { class Program ...
阅读全文
摘要:using System;using System.Collections.Generic;using System.Net.NetworkInformation;public class MyClass{ public static void Main() { //Host Info IPGlobalProperties ipProp = IPGlobalProperties.GetIPGlobalProperties(); string hostInfo = string.Format("Host Name:{...
阅读全文
摘要:结合控制台重定向和C#即使编译器(见我上面两篇文章)写的WinForm即时C#编译器,功能还不错。文本框就是你Main方法内的语句,可以输入任意测试代码,支持错误行号定位,编译结果捕获,自动拆分窗格等,程序按F5执行,F5…… 忘记在代码里面加说明了:( 时间不早了,上传睡觉,带批处理build代码和SharpDevelop方式源代码哦。可以拿下面的代码测试程序//F5:CompileandRuntheappF6:KillcurrentRunningApp//-----------------------------------------------------------System.D.
阅读全文
摘要:用visual studio编写测试程序需要新建solution,然后project,命名和存盘都是麻烦事。可以考虑写一个自己的编译环境。通过 Microsoft.CSharp.CSharpCodeProvider() 对象的 CompileAssemblyFromSource(parameters,codes) 方法就能得到编译结果对象 CompilerResults;然后结果对象再通过反射机制 result.CompiledAssembly.GetType("Phoenix") 就可以通过编译生成的程序集包含Main方法的类型。然后你可以 Phoenix.GetMeth
阅读全文
摘要:很多时候,我们需要捕获Console输出,然后在文本框等控件中显示。例如SnippetCompiler就实现了编译源代码并将结果在下面的ListView显示的功能。Console.SetOut(TextWriter)设置Console输出重定向,这样我们需要写一个TextWriter的派生类,这个类的构造函数我们传入要定向目标控件的引用,然后在 public override void Write(char value) 中修改引用控件的BeginInvoke方法挂一个Delegate关联控制台输出流到控件。代码如下,足够精简了。usingSystem;usingSystem.Windows.
阅读全文
摘要:///<summary>///referencetypeisallocateonHEAP,///theassignmentstatementjustsetapinttotheobject.///thereferenceobjectmemorycollectiononappexit!///</summary>usingSystem;usingSystem.Collections.Generic;///<summary>///classisreferencetype;structisvaluetype///</summary>class/*struc
阅读全文
摘要:///<summary>///参数修饰符params、out、ref///</summary>usingSystem;namespaceConDemo{classMainClass{staticdoubleAverage(paramsdouble[]values){doubleaverage=0;foreach(variteminvalues){average+=item;}average=average/values.Length;returnaverage;}publicstaticvoidAdd(intx,inty,outintans){ans=x+y;}stat
阅读全文
摘要:DEMO: Object Initializer, Anonymouse Method.usingSystem;usingSystem.Windows.Forms;publicclassMyClass{publicstaticvoidMain(){ButtonbtnHello=newButton();btnHello.Text="&Hello";btnHello.Click+=delegate{//AnonymouseMethodMessageBox.Show("Yes!It'stheAnonymouseMethod!");};Formf
阅读全文
摘要:C#在2.0以后进入了一些新特性,如 自动属性,对象初始化器,集合初始化器和lambda表达式,另外还包括匿名方法、可空类型和扩展方法等。详细见我2007年的文章,现测试几个初始化器在语法层面和reflector以后对比,可发现哪些是语法甜点,那些是CLR内置的改进。1.自动属性:AutoProperty 直接给出类内属性field的名称,后面跟{},并在内部简单写get; set;即可。 编译器将自动创建私有属性字段,并实现get_属性名称和 set_属性名称method,属于编译器语法甜头。public string FirstName{get;set;}2.对象初始化器:Object .
阅读全文
摘要:--提出Windows窗体间消息传递的问题:如何根据子窗体的状态更改父窗体的状态?如双击DataGridView的行记录后弹出修改该行记录的子窗体,在修改完数据后希望DataGridView数据刷新,这就需要子窗体通知父窗体刷新数据!考虑在子窗体上移动鼠标,将子窗体鼠标的坐标传递给父窗体的标题栏,如何实现?反过来在父窗体上移动鼠标,如何传递给子窗体?经典的做法为方法回调,在父窗体类中注册子窗体的MouseMove事件调用父窗体的Method直接修改标题栏;当然我们也可以将父窗体的对象指针船体给子窗体对象的tag,然后在子窗体的MouseMove事件中将tag转换为父窗体对象,然后修改其标题栏文
阅读全文