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

怎样建立网站wordpress菜单栏换色

怎样建立网站,wordpress菜单栏换色,wordpress如何修改html,网站如何做线上和线下推广一. 再谈委托 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/104223/

相关文章:

  • 网站制作中企动力优响应式网站建设有利于seo
  • 区块链媒体网站建设wordpress页脚内容居中
  • php手机网站开发工具成都的教育品牌网站建设
  • 苏州建网站要多少钱八爪鱼采集器 wordpress
  • 确定网站风格thinkphp相比Wordpress
  • 网站全屏代码wordpress无法连接ftp
  • 做ppt配图好用的网站重庆制作网站有哪些
  • 门户网站建设进度安卓手机开发者模式
  • 招商网站建设需要什么网站开发 在线数据库
  • 创建网站代码网站二级页怎么做
  • 网站建设 前沿文章建设网站网站建设公司
  • dede网站seo微信开店怎么注册开店流程
  • 苏华建设集团有限公司网站wordpress 普通文本 quot
  • 网站首页倒计时功能怎么做学网站开发技术
  • 上海网站备案流程欧宇公司网络建设方案
  • 网站营销型办公室装修费用会计分录
  • 个人网站网页设计模板学校ftp服务器做网站
  • 黄江网站建设外贸公司用的采购储运财务软件
  • 优化网站公司做网站建设
  • 门户网站的盈利模式网站建设中备案
  • 代码需求网站织梦怎么关闭网站
  • 浙江工信部网站备案查询东圃做网站
  • icp网站域名怎么填写官方网站建设银行年利息是多少钱
  • 沈阳做网站好的信息流优化师证书
  • 做招聘网站创业seo优化工作
  • 如何维护网站建设外卖网站建设价钱
  • 南宁保洁网站建设乌克兰服装网站建设
  • ppt链接网站怎么做的nas云存储做视频网站
  • 上海网站制作公司联系方式设计素材网站照片
  • 林州网站建设价格网络舆情是什么意思