当前位置 > 首页 > Asp.net

.Net Winform开发笔记(一)

2012-12-1 18:45:00来源:Asp.net

1.  理解“Windows 窗体应用程序”项目中Program.cs文件中的main方法与传统C++Console控制台程序中的main方法的区别。从程序运行层次上讲,两者无区别,都是程序的入口点,属于进程中的第一个线程。前者隐藏了UI应用程序必需的消息循环,后者没有。

2.  每个Windows桌面应用程序都必须包含至少一个UI线程,所谓UI线程,就是可以响应Windows消息的线程。通常情况下,除非特别需要,一个Windows桌面应用程序只包含一个UI线程。

3.  UI线程本质上跟普通线程一样,一般为程序的入口线程,比如Program.cs文件中的main方法,就是UI线程,而Application.Run()方法中封装了消息循环。如果没有Application.Run()方法,那么它跟其他线程一模一样。之所以叫做UI线程,是因为它之中包含一个类似

 1 While(GetMessage(…))//取Windows消息

2 {
3     //处理windows消息,调用开发者编写的回调方法,如事件处理程序 等。
4 }    

的循环。

4. 有关Windows消息机制等内容,请上网Google或者百度。

5.  UI线程主要负责界面的实时更新,所以开发人员编写代码时,请遵守以下规律:

     1) 不要在控件的事件处理程序中编写(或者调用)耗时的代码块;

     2) 不要在控件的事件处理程序中调用阻塞方法;阻塞与非阻塞应参见13.

6.  明白程序设计中的 委托、事件、事件处理程序的区别

      1) Publicdelegate void KeyPressEventHandler(KeyPressEventArgse); 

      2) Public eventKeyPressEventHandler KeyPress;

      3)  Public void Textbox1_KeyPress(objectsender,KeyPressEventArgs e)

           {

                   //….

           }

      其中:

      1为委托 2为事件 3为事件处理程序

7.  所有的事件处理程序都是在UI线程中调用,又因为UI线程负责更新界面,所以UI线程始终必须保持顺畅(表现为3中的while循环体不能耗时太长),即不能出现长时间执 行一个方法不返回的情况。所以,请遵守5中的规律。

8.  同一个方法,可以运行在多个线程之中,方法跟线程没有一对一的原则

      Private void  thread_pro()  //

      {  

      }

     1) privatebutton1_click(object sender,EventArgs e)

     {

           thread_pro();  //thread_pro运行在UI线程中

     }

   2)private button1_click(object sender,EventArgs e)

     {

           Thread t = new Thread(newThreadStart(thread_pro));

           Thread t1 = new Thread(new ThreadStart(thread_pro));

           Thread t2 = newThread(new ThreadStart(thread


  • 设计模式在实际应用中的演化和改良(1)-Visitor

    2009-4-28 23:09:00

    〔从这篇《模式的演化和改良》系列开始,我会不定期的更新这个系列的文章,皆在于分享自己在日常工作中的一些心得体会,并整理成较系统的文章,以此和大家沟通分享,也请大家指出不足或提出新的见解〕 基于O

  • 基本代码安全知识

    2010-7-9 8:28:00

    作者: 超人哥哥 发表于 2010-07-09 07:47 原文链接 阅读: 201 评论: 0 昨天公司进行代码安全规范培训,有些东西早已知道,而有些东西第一次听说,于是都记下来和大家一

  • Validating Data in ASP.NET MVC Applications

    2011-5-11 13:45:00

    Validating data entered by the user is one of the most common tasks in web applications. As far as

  • 超级简单:一个简单的SQL工具-BuildQuery

    2009-12-30 8:56:00

    阅读: 28 评论: 0 作者: 麒麟 发表于 2009-12-30 08:52 原文链接 /Files/zhuqil/BuildQuery.rar BuildQuery类是能

  • Silverlight实现查询建模(十) 与Silverlight流程设计器集成

    2009-9-23 0:23:00

    摘要: 这部分应该是目前XCenter中的最吸引人的地方。首先要感谢chegan的贡献。这里我算站在巨人的肩膀上了, 先看一下效果图: 开始阶段其实我根本没有想用什么流程设计器来实现。只是随着逐渐

  • 本周ASP.NET英文技术文章推荐[04/01 - 04/07]

    2007-4-7 15:20:00

    摘要: 本期共有6篇文章: 1.让UpdatePanel支持文件上传 第一部分:开始 2.JSON攻击以及ASP.NET AJAX 1.0 是如何避免的 3.IIS 7.0 4.在.NE

  • 让我们摆脱这些讨厌的程序员吧

    2009-7-28 18:46:00

    【原文地址】 And Get Rid Of Those Pesky Programmers 【原文发表日期】 Jun 12, 2009   【狐言乱语:说实在

  • 终究还是一只菜鸟

    2009-3-30 3:28:00

    摘要: 本来打算一切都尘埃落定再去写东西。可是如果这么一直等下去,真不知道还有没有写的可能啦。 阅读全文 -------------------------- 新闻: 微软中国开始对企业发出信

  • Moles - Isolation framework for .NET(假.Net)介紹

    2010-11-26 2:52:00

    Moles 是前陣子 91 大推薦我用的Mock的Framework,它跟 Moq 與Rhino.Mocks這類的套件不同,Moq與Rhino.Mocks這類的Mock是對Interface或Abs

  • NPOI 1.2教程 - 2.2.2 单元格合并

    2009-3-31 8:00:00

    摘要: 作者:Tony QuNPOI官方网站:http://npoi.codeplex.com/合并单元格在制作表格时很有用,比如说表格的标题就经常是把第一行的单元格合并居中。那么在NPOI中应该如