一个最简单的异步调用
如上,针对要异步调用的方法建一个委托,再利用 BeginInvoke 来异步调用,BeginInvoke 的参数是在委托对应的参数后面再加两个参数,这两个参数我们后面会讲,这里先为 null。
获取异步调用的返回值
获取异步调用的返回值有多种方法,其中有一类方法需要阻塞主线程,由于将主线程阻塞了,就失去异步的意义了,所以我们只是举一个例来说明一下就可以了。
利用 EndInvoke。
获取异步调用的返回值(用提示代替阻塞)
前面的代码在异步调用期间,完全阻塞线程,下面的代码将其作些改进,将阻塞改为提示。
获取异步调用的返回值(最优方案)
上面两种获取异步调用返回值,都不是很理想:要么假死,要么假活(弄个提示,实际也不能离开去做其他事)。
最优的方案是,只要发出 BeginInvoke,就不管了,主线程爱干嘛干嘛去,当异步调用执行完后,通知一声就可以了。这就得用到之前说的 BeginInvoke 的后两个参数了。
我们会发现 click end. 先显示,然后异步调用执行完后自动去执行 AsyncFuncComplete。