http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
http://www.cnblogs.com/JimmyZhang/category/107373.html