为什么c#开启了线程还要委托?
2个回答
展开全部
看来一下其他人的回答,都有问题或者错误。
你没有理解delegate(委托)的概念,.Net的委托本质上就是指向函数的指针,只不过这种指针是经过封装后类型安全的。委托和线程是两个不同的概念,线程是动态的,委托就是一个或一组内存地址,是静态的。线程执行时如果遇到了指向函数的指针就执行这个函数。
.Net为了方便编程,给委托赋予了两种方式以供调用线程来执行,即同步和异步方式,它们分别通过Invoke和BeginInvoke来开启。Invoke就是同步执行,由调用线程来执行,而BeginInvoke则开启了一个后台线程来执行delegate所指向的函数,这个后台线程和调用线程之间属于异步执行方式。实际上有了delegate这个概念,你在编程时就可以不用直接使用Thread类来开辟新的线程了,因为微软替你实现了。
建议你好好看看MSDN,这些概念不是一两天就能消化的,有问题再问。
你没有理解delegate(委托)的概念,.Net的委托本质上就是指向函数的指针,只不过这种指针是经过封装后类型安全的。委托和线程是两个不同的概念,线程是动态的,委托就是一个或一组内存地址,是静态的。线程执行时如果遇到了指向函数的指针就执行这个函数。
.Net为了方便编程,给委托赋予了两种方式以供调用线程来执行,即同步和异步方式,它们分别通过Invoke和BeginInvoke来开启。Invoke就是同步执行,由调用线程来执行,而BeginInvoke则开启了一个后台线程来执行delegate所指向的函数,这个后台线程和调用线程之间属于异步执行方式。实际上有了delegate这个概念,你在编程时就可以不用直接使用Thread类来开辟新的线程了,因为微软替你实现了。
建议你好好看看MSDN,这些概念不是一两天就能消化的,有问题再问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
01
//声明变量并初始化
int i = 3; //整型
print("i");02
const float PI = 3.14f; //浮点型
print("PI");03
char c='a'; //字符及字符串
print('a');
string str = "a123";
print("str");
str = 1 + "";
print("str");04
bool ifSec = true; //布尔值
print("ifSec");
bool ifSec = false;
print("ifSec");End
免责声明:
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询