兼职做效果图设计到哪个网站找有网站怎么做seo推广
兼职做效果图设计到哪个网站找,有网站怎么做seo推广,网站建设实践论文,企业宣传appInvoke和BeginInvoke的区别
本文导读#xff1a;BeginInvoke() 调用时#xff0c;当前线程会启用线程池中的某个线程来执行此方法#xff0c;当前线程不被阻塞#xff0c;继续运行后面的代码#xff0c; Invoke() 调用时#xff0c;会阻塞当前线程#xff0c;等到 Invo…Invoke和BeginInvoke的区别
本文导读BeginInvoke() 调用时当前线程会启用线程池中的某个线程来执行此方法当前线程不被阻塞继续运行后面的代码 Invoke() 调用时会阻塞当前线程等到 Invoke() 方法返回才继续执行后面的代码而这两个方法中执行的是一个委托。
一、c# Invoke和BeginInvoke的认识
1、Invoke() 调用时Invoke会阻止当前主线程的运行等到 Invoke() 方法返回才继续执行后面的代码表现出“同步”的概念。
3、BeginInvoke() 调用时当前线程会启用线程池中的某个线程来执行此方法BeginInvoke不会阻止当前主线程的运行而是等当前主线程做完事情之后再执行BeginInvoke中的代码内容表现出“异步”的概念。
4、EndInvoke() 在想获取 BeginInvoke() 执行完毕后的结果时调用此方法来获取。
二、通过实例说明 c# Invoke和BeginInvoke的区别
1、实例
C# 代码 复制 private void button1_Click(object sender, EventArgs e) {this.textBox1.Text “1”; this.Invoke(new EventHandler(delegate {this.textBox1.Text 2;}));this.textBox1.Text 3;}结果为123
2、实例
C# 代码 复制 private void button1_Click(object sender, EventArgs e) {this.textBox1.Text “1”; this.BeginInvoke(new EventHandler(delegate {this.textBox1.Text 2;}));this.textBox1.Text 3;}结果为 132
3、实例
C# 代码 复制
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading;
namespace InvokeTest { delegate void MsgDelegate(String str);//声明一个代理
public partial class Form1 : Form
{Thread[] threads new Thread[10];//如果不使用关键字new出对象来则会报“未将对象引用设置到对象的实例。”的错误public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){Thread.CurrentThread.Name 主线程;for(int i0;i10;i){ Thread ts new Thread(new ThreadStart(threadProc)); ts.Name 线程组成员i.ToString()号; threads[i] ts; ts.IsBackground true; ts.Start(); }}private void showMsg(String str){Thread.Sleep(5000);//线程休眠5秒...MessageBox.Show(str是在Thread.CurrentThread.Name中执行的);//显示执行该代理函数的是哪个线程}private void button1_Click(object sender, EventArgs e){MessageBox.Show(执行A1代码段);Thread T1 new Thread(threadProc1);T1.Name 线程一;T1.Start();MessageBox.Show(执行B1代码段);}private void button2_Click(object sender, EventArgs e){MessageBox.Show(执行A2代码段);Thread T2 new Thread(threadProc2);T2.Name 线程二;T2.Start();MessageBox.Show(执行B2代码段);}/// summary/// 线程一的线程函数/// /summaryprivate void threadProc1(){Invoke(new MsgDelegate(showMsg), new object[] { 通过Invoke调用showMsg });//相当于this.Invoke,调用要消耗较长时间的代码后完了才开始执行下一条语句MessageBox.Show(Invoke函数后调用因为Invoke是同步执行的所以刚才我一直在等待showMsg执行完呢唉...);}/// summary/// 线程二的线程函数/// /summaryprivate void threadProc2(){BeginInvoke(new MsgDelegate(showMsg), new object[] { 通过BeginInvoke调用showMsg });//相当于this.BeginInvoke()调用要消耗较长时间的代码后立刻执行下一条语句MessageBox.Show(BeginInvoke函数后调用,但由于BeginInvoke的异步执行故还没等showMsg执行完我就被执行了哈哈...);}private void threadProc(){MessageBox.Show(Thread.CurrentThread.Name 已经运行);}
}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92406.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!