1.1中invoke和beginInvoke的定义。控制类
invoke的含义是:在拥有此控件的基础窗口句柄的现呈上同步执行指定的委托(同步)beginInvoke的含义是:在创建控件的基础句柄所在线程上异步执行的委托(异步)句柄(Handle):Handle是一个抽象的概念,它隐藏了内核实现的细节,为调用提供了方便,保证了内核的安全性。形象的比喻是“用一件小事去拾起一堆事的把柄”。根据他的概念,我们可以把指针看作句柄的一种形式,但它有一个更独特的含义:指向内存中的一个地址。
系统中有很多内核对象,大部分都很庞大,有很多属性。当这些属性需要传输时,一开始不能直接复制,因为会比较慢。其次,这些属性的第一个地址不能直接调用,会暴露属性的位置,导致属性的任意变化,影响系统的稳定性;最后,由于内存的地址可能随时改变(Windows是基于虚拟内存的,其内存管理器经常在内存中来回移动对象),直接调用会导致以后使用时没有地址。
在此基础上,采用了手柄的概念。是进一步抽象对象的过程(理解面向对象的概念),它会在过程的address 空中设置一个表,表中存储了一个对象的编号和这个编号对应的地址,这个对象可以被这个地址引用。这个号码是手柄。句柄的作用是隐藏对象的真实地址,同时提供一个映射地址方便对象调用。这样既能保证对象的安全性,又能保证调用的方便性。
2.invoke的用法一般来说,上面的解释是在应用程序的主线程上调用并执行指定的委托。主要目的是让工作线程完成大部分计算工作,把纯界面更新放到UI线程中,减轻UI线程负担(避免UI无响应)。
//如何使用//this . invoke//第一步:定义修改UI私有void修改按钮的方法(bool _ b) {this。按钮1。enabled = _ b;}//第二步:声明第一步方法的委托私有委托Void Modify Button _ DG(bool _ b);//第三步:调用委托私有void Calldelgate( ){ /*用这个。在Windows窗体应用程序和此中调用。调度员。调用*/this。在WPF应用中调用(new modify button _ DG(modify button),new object[]{ false });}//第四步:在非UI线程中调用//create thread thread _ t = new thread(new thread start(thread method));_ t . Start();//thread entry private void thread method(){ calldelgate();}
版权声明:本文收集自网友或由网友提供。如有侵权,请告知版主或留言,微信官方账号立即删除。
1.《invoke C#中invoke和beginInvoke的使用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《invoke C#中invoke和beginInvoke的使用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1016916.html