} else { Debug.Log(string.Format(\返回为false,未找到baby哭的原因\return false; } } ///
注:在上面代码中
//==================
ComparisonEventHandler
红色的 部分,泛型委托,在给委托变量绑定方法时,委托
ComparisonEventHandler后一定要跟一个类型参数,且该参数与将要被绑定方法的参数一样的类型。 如果不写,将报错
运行 如下:
ok,没问题
使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。 三、方法和委托异步调用
通常情况下,如果需要异步执行一个耗时的操作,我们会新起一个线程,然后让这个线程去执行代码。但是对于每一个异步调用都通过创建线程来进行操作显然会对性能产生一定的影响,同时操作也相对繁琐一些。
c# 中可以通过委托进行方法的异步调用,就是说客户端在异步调用方法时,本身并不会因为方法的调用而中断,而是从线程池中抓取一个线程去执行该方法,自身线程(主线程)在完成抓取线程这一过程之后,继续执行下面的代码,这样就实现了代码的并行执行。
使用线程池的好处就是避免了频繁进行异步调用时创建、销毁线程的开销。
而当使用异步调用时,更多情况下是为了提升系统的性能,而在这种情况下使用异步编程时,就需要进行更多的控制,
比如:当异步执行方法的方法结束时通知客户端、返回异步执行方法的返回值等。这里我就对BeginInvoke()方法、EndInvoke()方法和其相关的IAysncResult做一个简单的介绍。 先看一段不使用异步调用的通常情况
using UnityEngine; using System.Collections; using System.Threading; using System; public class test : MonoBehaviour { // Use this for initialization void Start() { Debug.Log(\程序开始运行:\Thread.CurrentThread.Name = \Calculator cal = new Calculator(); int result = cal.Add(6, 8); Debug.Log(string.Format(\结果为: {0}\\n\// 做某些其它的事情,模拟需要执行3 秒钟 for (int i = 1; i <= 3; i++) { Thread.Sleep(TimeSpan.FromSeconds(i)); Debug.Log(string.Format(\线程:{0}: 执行了 {1} s 时间(s).\} Debug.Log(\其它的事情完成\} public class Calculator { public int Add(int x, int y) { if (Thread.CurrentThread.IsThreadPoolThread) { Thread.CurrentThread.Name = \}
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库unity3D学习委托进阶、回调函数(三)(2)在线全文阅读。
相关推荐: