12 2011 档案

C# 子线程调用主线程窗体的解决方法
摘要:摘自其他人博客,自己试过确实解决问题。(如在自己定义的线程里面给textbox赋值)由于Windows窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的bug,包括争用和死锁的情况。所以VS2005这一改动便可以增强线程安全性。我想大家更关心的是如何解决这个问题,如何才能操作其它线程中的控件而不引发异常,接下来我们就来探讨下这个问题:第一种方法:这种方法我没用过,因为大家推荐不要使用,所以我没去实验过,具体方法如下(摘自网上):设置System.Windows.Forms.Con 阅读全文

posted @ 2011-12-31 15:28 大佛张 阅读(2273) 评论(0) 推荐(0)

谈C#委托与事件:其实C#高级编程(第6版)讲得很清楚
摘要:一、在控制台下使用委托和事件我们都知道,C#中有“接口”这个概念,所谓的“接口”就是定义一套标准,然后由实现类来具体实现其中的方法,所以说“接口,是一组类的抽象”。同样道理,我们可以将“委托”理解为“方法的抽象”,也就是说定义一个方法的模板,至于这个方法具体是怎么样的,就由方法自己去实现。我们知道接口的最大好处就是可以实现多态,同理,“委托”是可以实现方法的多态,当我们想调用某个具体方法的时候,我们不直接调用这个方法,而是去调用这个委托。当然,我们必须在具体方法和委托之间建立某种关联。下面我们来看例子。首先,我们定义一个委托:public delegate void SaySomething( 阅读全文

posted @ 2011-12-31 09:54 大佛张 阅读(237) 评论(0) 推荐(0)

多线程通信实例(子线程向主线程:用委托事件实现)
摘要:1using System;2using System.Threading;34namespace ifan5{6 //自定义委托声明7publicdelegatevoid childExitDelegate(object sender, ChildExitEventArgs e);89 publicclass TDelegate10 {11 //自定义的事件,实际上就是上面那个委托类型的实例12publicstaticevent childExitDelegate onChildThreadExit;1314 privatestaticvoid Main()15 {16 //订阅事件,就是说 阅读全文

posted @ 2011-12-31 09:39 大佛张 阅读(962) 评论(0) 推荐(0)

C#委托及事件 详解(讲得比较透彻)
摘要:在C#中,委托(delegate)是一种引用类型,在其他语言中,与委托最接近的是函数指针,但委托不仅存储对方法入口点的引用,还存储对用于调用方法的对象实例的引用。简单的讲委托(delegate)是一种类型安全的函数指针,首先,看下面的示例程序,在C++中使用函数指针。首先,存在两个方法:分别用于求两个数的最大值和最小值。int Max(int x,int y){return x>y?x:y;}int Min(int x,int y){return x}上面两个函数的特点是:函数的返回值类型及参数列表都一样。那么,我们可以使用函数指针来指代这两个函数,并且可以将具体的指代过程交给用户,这样 阅读全文

posted @ 2011-12-30 10:36 大佛张 阅读(2168) 评论(0) 推荐(2)

ORM之硬伤
摘要:http://www.cnblogs.com/Barton131420/archive/2007/01/07/613955.html园子里有些人,他们真以为自己明白了面向对象,然后装着满腹经纶,侃侃而谈,一篇接一篇,不厌其烦地喊着ORM如何如何。你以为他真的明白“面向对象”么?其实,他对面向对象的理解仅限于教科书中的封装、继承和多态,或者再知道一点面向对象的若干原则但其实并不真正理解。笔者愚钝,入行多年尚不懂面向对象,只懂得用其形而不懂用其实。五年后的某一天终于开窍,明白了面向对象之实,也仅仅是一个开始而已。当又经历了另一个五年的倦怠,发现并理解了设计模式、面向方面等技术作为面向对象的必要补充 阅读全文

posted @ 2011-12-23 10:41 大佛张 阅读(262) 评论(0) 推荐(0)

partial class 说明
摘要:C# 2.0 可以将类、结构或接口的定义拆分到两个或多个源文件中,在类声明前添加partial关键字即可。例如:下面的PartialTest类class PartialTest{string Str_FieldTest;int Int_FieldTest;public void DoTest(){Debug.Print("Test");}}可在不同源文件中写成下面形式:一个文件中写:partial class PartialTest{string Str_FieldTest;int Int_FieldTest;}另一个文件中写:partial class PartialTe 阅读全文

posted @ 2011-12-23 10:31 大佛张 阅读(2970) 评论(1) 推荐(2)

.NET多线程编程
摘要:在.NET多线程编程这个系列我们讲一起来探讨多线程编程的各个方面。首先我将在本篇文章的开始向大家介绍多线程的有关概念以及多线程编程的基础知识;在接下来的文章中,我将逐一讲述。NET平台上多线程编程的知识,诸如System.Threading命名空间的重要类以及方法,并就一些例子程序来作说明。 引言 早期的计算硬件十分复杂,但是操作系统执行的功能确十分的简单。那个时候的操作系统在任一时间点只能执行一个任务,也就是同一时间只能执行一个程序。多个任务的执行必须得轮流执行,在系统里面进行排队等候。由于计算机的发展,要求系统功能越来越强大,这个时候出现了分时操作的概念:每个运行的程序占有一定的处理... 阅读全文

posted @ 2011-12-20 15:26 大佛张 阅读(313) 评论(0) 推荐(0)

C#如何禁用Form窗口的最大化按钮
摘要:实际项目开发过程中,我们可能需要将Form窗口的最大化按钮禁用掉。1。设定系统菜单首先在窗体类中声明:public class Form1 : System.Windows.Forms.Form{[DllImport("user32.dll",EntryPoint="GetSystemMenu")] //导入API函数extern static System.IntPtr GetSystemMenu(System.IntPtr hWnd , System.IntPtr bRevert);[DllImport("user32.dll", 阅读全文

posted @ 2011-12-05 16:28 大佛张 阅读(1417) 评论(0) 推荐(0)