当前位置: 首页 > news >正文

做搜狗pc网站优化排住建房产信息查询

做搜狗pc网站优化排,住建房产信息查询,360网站弹窗推广怎么做的,关键词搜索引擎网站一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型#xff0c;通过委托可以把方法以参数的形式传递给另外一个方法#xff0c;实现插件式的开发模式#xff1b; 同时调用委托的时候#xff0c;委托所包含的所有方法都会被实现。 2. 委托的发展历史#xff1a;new…一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型通过委托可以把方法以参数的形式传递给另外一个方法实现插件式的开发模式 同时调用委托的时候委托所包含的所有方法都会被实现。 2. 委托的发展历史new实例化传递方法→直接等于方法名→delegate匿名方法→省略delegate→省略括号中的参数→当只有一个参数省略小括号 →当方法体只有一行省略大括号 (详见http://www.cnblogs.com/yaopengfei/p/6959141.html) 3常用的Action委托和Func委托 A. Action委托无返回值至少有一个参数的委托 B. Func委托有返回值可以无参数的委托(当然也可以有参数) C. Action委托无参数无返回值的委托  二. 委托的调用 委托的调用分为两种 A. 同步调用Invoke方法方法参数为函数的参数。 B. 异步调用BeginInvoke方法。 其中无论是哪类调用都有两类写法 ①利用Action(或Func)内置委托调用的时候赋值。 ②利用Action委托直接赋值然后调用。 1 /// summary2 /// 执行动作:耗时而已3 /// /summary4 private void TestThread2(string threadName1, string threadName2)5 {6 Console.WriteLine(线程开始线程名为{2}和{3}当前线程的id为:{0}当前时间为{1},, System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss:fff), threadName1, threadName2);7 long sum 0;8 for (int i 1; i 999999999; i)9 { 10 sum i; 11 } 12 Console.WriteLine(线程结束线程名为{2}和{3}当前线程的id为::{0}当前时间为{1}, System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss:fff), threadName1, threadName2); 13 } 三. 深入剖析BeginInvoke方法 首先需要明确该方法参数个数不定, 最后两个参数含义固定如果不使用的话需要赋值null该方法最少两个参数即方法无参数这种情况下BeginInvoke中只有两个参数。此外赋值的方法有几个参数BeginInvoke中从左开始新增几个参数。 ①. 倒数第二个参数是有一个参数值无返回值的委托它代表的含义为该线程执行完毕后的回调。 ②. 倒数第一个参数向倒数第二个参数(即回调)中传值需要用AsyncState来接受。 ③. 其它参数即为赋值方法的参数。 注BeginInvoke的返回值等价于异步回调中的t。 1 private void button13_Click(object sender, EventArgs e)2 {3 Stopwatch watch new Stopwatch();4 watch.Start();5 Console.WriteLine(----------------- button1_Click 开始 主线程id为{0} --------------------------, Thread.CurrentThread.ManagedThreadId);6 7 Actionstring myFunc this.TestThread;8 IAsyncResult asyncResult null;9 //参数说明前面几个参数都是方法的参数值倒数第二个为异步调用的回调函数倒数第一个为传给回调函数的参数 10 for (int i 0; i 1; i) 11 { 12 string name string.Format(button1_Click{0}, i); 13 asyncResult myFunc.BeginInvoke(name, t 14 { 15 Console.WriteLine(我是线程{0}的回调, Thread.CurrentThread.ManagedThreadId); 16 //用 t.AsyncState 来获取回调传进来的参数 17 Console.WriteLine(传进来的参数为{0}, t.AsyncState); 18 19 //测试一下异步返回值的结果 20 Console.WriteLine(异步返回值的结果{0}, t.Equals(asyncResult)); 21 }, maru); 22 } 23 24 watch.Stop(); 25 Console.WriteLine(----------------- button1_Click 结束 主线程id为{0} 总耗时{1}--------------------------, Thread.CurrentThread.ManagedThreadId, watch.ElapsedMilliseconds); 26 27 } 结果 四. 线程等待的三种方式 1. asyncResult.IsCompleted属性该方式会存在时间上的误差。 2. WaitOne方法可以控制一直等待or超时不再等待。 3. EndInvoke方法官方推荐的线程等待的方式。 以上三种方式的局限性批量线程等待的时候不灵活需要for循环了。 1 private void button14_Click(object sender, EventArgs e)2 {3 Stopwatch watch new Stopwatch();4 watch.Start();5 Console.WriteLine(----------------- button1_Click 开始 主线程id为{0} --------------------------, Thread.CurrentThread.ManagedThreadId);6 7 IAsyncResult asyncResult null;8 Actionstring myFunc this.TestThread;9 string name string.Format(button1_Click{0}, 111); 10 asyncResult myFunc.BeginInvoke(name, t 11 { 12 Console.WriteLine(我是线程{0}的回调, Thread.CurrentThread.ManagedThreadId); 13 //用 t.AsyncState 来获取回调传进来的参数 14 Console.WriteLine(传进来的参数为{0}, t.AsyncState); 15 }, maru); 16 17 //等待的方式1会有时间上的误差 18 //while (!asyncResult.IsCompleted) 19 //{ 20 // Console.WriteLine(正在等待中); 21 //} 22 23 // 等待的方式二: 24 //asyncResult.AsyncWaitHandle.WaitOne();//一直等待 25 //asyncResult.AsyncWaitHandle.WaitOne(-1);//一直等待 26 //asyncResult.AsyncWaitHandle.WaitOne(1000);//等待1000毫秒超时就不等待了 27 28 //等待的方式三 29 myFunc.EndInvoke(asyncResult); 30 31 watch.Stop(); 32 Console.WriteLine(----------------- button1_Click 结束 主线程id为{0} 总耗时{1}--------------------------, Thread.CurrentThread.ManagedThreadId, watch.ElapsedMilliseconds); 33 34 } 下面是多个线程等待的情况 1 private void button15_Click(object sender, EventArgs e)2 {3 Stopwatch watch new Stopwatch();4 watch.Start();5 Console.WriteLine(----------------- button1_Click 开始 主线程id为{0} --------------------------, Thread.CurrentThread.ManagedThreadId);6 7 ListIAsyncResult list new ListIAsyncResult();8 9 for (int i 0; i 5; i) 10 { 11 string name string.Format(button1_Click{0}, i); 12 Action myFunc () 13 { 14 TestThread2(name, name); 15 }; 16 var asyncResult myFunc.BeginInvoke(null, null); 17 list.Add(asyncResult); 18 } 19 20 //下面是线程等待 21 foreach (var item in list) 22 { 23 item.AsyncWaitHandle.WaitOne(-1); 24 } 25 26 watch.Stop(); 27 Console.WriteLine(----------------- button1_Click 结束 主线程id为{0} 总耗时{1}--------------------------, Thread.CurrentThread.ManagedThreadId, watch.ElapsedMilliseconds); 28 } 结果
http://www.zqtcl.cn/news/767475/

相关文章:

  • 网站定制 北京贵阳网站建设公司哪家好
  • 如何做logo模板下载网站企业策划
  • 合肥做网站的公司讯登欧亚达网站是哪家公司做的
  • 网站模板带有sql后台下载企业网站建设平台的功能
  • 网站推广的实际案例电子商务网站建设的要求
  • 永平建设有限公司网站2023一般纳税人企业所得税怎么算
  • 创业网站推广怎么做简单的网站首页
  • 外贸网站模板 外贸网站制作如何推广宣传一个品牌
  • 中企动力企业邮箱 手机邮箱河南网站建设优化推广
  • 广州seo网站多少钱王野天津音乐广播电台图片
  • 东莞网站制作十强怎么做一个链接网站
  • 深圳网站设计 建设首选wordpress 获取父页面
  • 大兴企业网站建设公司wordpress谷歌字体优化
  • 哈尔滨建设银行网站网站建设运营服务商
  • 重庆本地建站企业网站建设流程及费用
  • 网站建设需要用到那些语言简述网站建设和推广评价指标
  • 17网站一起做 佛山印刷做网站网上接单
  • 网站建设步骤 优帮云网站建设首选定制开发
  • 专门做家居的网站国内企业网站设计
  • 做网站时怎么取消鼠标悬停性价比最高网站建设
  • 三网合一网站模板网站上内容列表怎么做
  • 鲜花商城网站建设西安房产网站大全
  • 家庭宽带做网站空间一个数据库可以做几个网站
  • 环境设计公司排名搜索引擎seo是什么意思
  • 北京网站建设策划排名长春市建设集团股份有限公司
  • 网站建设项目怎么跟进客户安阳哪里有做网站的
  • 重庆定制网站建设公司郑州网站模板
  • 网站 建设 领导小组wordpress下拉 友情链接
  • 做网站用php广州最新新闻
  • 福州市住房和城乡建设局网站18款禁用观看黄入口