C#中的委托有什么作用和好处,在什么地方要用委托,麻烦通俗讲一下,最好有个例子,谢谢
2个回答
展开全部
委托是一个线程.
我们的cpu都是多进程式cpu.可以同时运行多个进程. exe运行后就是进程.
但是进程是不会工作的.工作的是线程.一个进程里至少有一个线程.
启动exe时的线程是主线程,它是可以控制窗体内所有控件的.
举例: 当点击"提交"按钮时,后台需要处理大量并及其耗时的数据时,程序会处于"假卡死"状态.这样用户体验不好.
如果用了委托.可以在点击"提交"按钮的时候让按钮不可用,并出现一个滚动图片提示用户"系统正在处理...",这样就比较人性化了.
也就是说主线程控制按钮不可用,滚动图片显示.
委托处理数据.处理完毕后让按钮可用,滚动图片消失.
也可以理解为这是双线程或多线程的其实一种表现形式.
我们的cpu都是多进程式cpu.可以同时运行多个进程. exe运行后就是进程.
但是进程是不会工作的.工作的是线程.一个进程里至少有一个线程.
启动exe时的线程是主线程,它是可以控制窗体内所有控件的.
举例: 当点击"提交"按钮时,后台需要处理大量并及其耗时的数据时,程序会处于"假卡死"状态.这样用户体验不好.
如果用了委托.可以在点击"提交"按钮的时候让按钮不可用,并出现一个滚动图片提示用户"系统正在处理...",这样就比较人性化了.
也就是说主线程控制按钮不可用,滚动图片显示.
委托处理数据.处理完毕后让按钮可用,滚动图片消失.
也可以理解为这是双线程或多线程的其实一种表现形式.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先不说委托,至少事件应该用过吧?事件就是一种特殊的委托。
另外你可以把int i=5;代表一个整形变量i,并赋值为5,
那么假设让你用一个变量代表某个方法你会怎么写?
这就是委托,可以将方法抽象,定义一个委托: public delegate void FunA();
那么 FunA就代表一个“方法变量类型”,可以定义这个“类型方法的变量”,并可以对这个变量赋值任何 返回值为void ,无参数的方法。
如 FunA a=func1;
另外你可以把int i=5;代表一个整形变量i,并赋值为5,
那么假设让你用一个变量代表某个方法你会怎么写?
这就是委托,可以将方法抽象,定义一个委托: public delegate void FunA();
那么 FunA就代表一个“方法变量类型”,可以定义这个“类型方法的变量”,并可以对这个变量赋值任何 返回值为void ,无参数的方法。
如 FunA a=func1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询