异步调用

  • 四线程与异步-什么是线程安全?
  • 八线程与异步-C#
    怎么样选拔线程
  • 三十二线程与异步-关于让线程“等等”有关的多少个点子
  • 多线程与异步-将参数字传送入线程的两种方式
  • 八十二十四线程与异步-C#
    异步调用
  • 八线程与异步-异步调用与多线程的分别
  • 八线程与异步-异步调用 Web Service
  • 多线程与异步-Task.run、await、async
    以异步方式施行

唯恐最广泛的正是用异步调用了(请参见 C#
异步调用),为何不用八线程呢?请参见:异步调用与二十四线程的分化。

异步调用 Web Service

跟此外异步调用没啥差异,使用无偿的天气预报程序接口提供的
Web Service。

private delegate string AsyncFuncDelegate(); private string AsyncFunc()
{ cn.com.webxml.webservice.WeatherWS ws = new
cn.com.webxml.webservice.WeatherWS(); string[] items =
ws.getWeather(“重庆”, “”); return String.Join(Environment.NewLine,
items); } private void AsyncFuncComplete(IAsyncResult ar) { if (ar ==
null) { return; } Console.WriteLine((ar.AsyncState as
AsyncFuncDelegate).EndInvoke(ar)); } private void button1_Click(object
sender, EventArgs e) { AsyncFuncDelegate afd = AsyncFunc;
afd.BeginInvoke(AsyncFuncComplete, afd); Console.WriteLine(“click
end.”); }

我们看来,先出示 click end.,然后再显示天气预报内容。

半异步

半异步是啥意思呢?那是自身起的名。大家发掘存点 Web Service的艺术就提供了异步调用,不过那几个只可以评释她里头运算的时候是异步的,从大家调用方到他
Web Service服务器这里要创制的调用考虑,仍是一块的。所以笔者给他起个名半异步。

private void WeatherComplete(object sender,
cn.com.webxml.webservice.getWeatherCompletedEventArgs args) {
Console.WriteLine(String.Join(Environment.NewLine, args.Result)); }
private void button1_Click(object sender, EventArgs e) {
cn.com.webxml.webservice.WeatherWS ws = new
cn.com.webxml.webservice.WeatherWS(); ws.getWeatherCompleted += new
cn.com.webxml.webservice.getWeatherCompletedEventHandler(WeatherComplete);
ws.getWeatherAsync(“重庆”, “”); Console.WriteLine(“click end.”); }

如上,在点击按钮后,大家多半会见到分界面假死,因为在 getWeatherAsync
这段,实际上还要去找互连网,去与服务器连接,前段时间怎么也得几百纳秒。

  • 二十四线程与异步-什么是线程安全?
  • 三十二线程与异步-C#
    怎样运用线程
  • 三十十六线程与异步-关于让线程“等等”有关的几个点子
  • 四十多线程与异步-将参数字传送入线程的三种格局
  • 八十多线程与异步-C#
    异步调用
  • 八线程与异步-异步调用与八线程的差异
  • 三十多线程与异步-异步调用 Web Service
  • 四十八线程与异步-Task.run、await、async
    以异步情势施行

发表评论

电子邮件地址不会被公开。 必填项已用*标注