多线程与异步-C# 异步调用

  • 多线程与异步-什么是线程安全?
  • 多线程与异步-C# 如何使用线程
  • 多线程与异步-关于让线程“等等”有关的几个方法
  • 多线程与异步-将参数传入线程的三种方法
  • 多线程与异步-C# 异步调用
  • 多线程与异步-异步调用与多线程的区别
  • 多线程与异步-异步调用 Web Service
  • 多线程与异步-Task.Run、await、async 以异步方式执行

一个最简单的异步调用

如上,针对要异步调用的方法建一个委托,再利用 BeginInvoke 来异步调用,BeginInvoke 的参数是在委托对应的参数后面再加两个参数,这两个参数我们后面会讲,这里先为 null。

获取异步调用的返回值

获取异步调用的返回值有多种方法,其中有一类方法需要阻塞主线程,由于将主线程阻塞了,就失去异步的意义了,所以我们只是举一个例来说明一下就可以了。

利用 EndInvoke。

获取异步调用的返回值(用提示代替阻塞)

前面的代码在异步调用期间,完全阻塞线程,下面的代码将其作些改进,将阻塞改为提示。

获取异步调用的返回值(最优方案)

上面两种获取异步调用返回值,都不是很理想:要么假死,要么假活(弄个提示,实际也不能离开去做其他事)。

最优的方案是,只要发出 BeginInvoke,就不管了,主线程爱干嘛干嘛去,当异步调用执行完后,通知一声就可以了。这就得用到之前说的 BeginInvoke 的后两个参数了。

我们会发现 click end. 先显示,然后异步调用执行完后自动去执行 AsyncFuncComplete。

  • 多线程与异步-什么是线程安全?
  • 多线程与异步-C# 如何使用线程
  • 多线程与异步-关于让线程“等等”有关的几个方法
  • 多线程与异步-将参数传入线程的三种方法
  • 多线程与异步-C# 异步调用
  • 多线程与异步-异步调用与多线程的区别
  • 多线程与异步-异步调用 Web Service
  • 多线程与异步-Task.Run、await、async 以异步方式执行

你可能感兴趣的