C#async await非同期プログラミングの概要


ここではasyncについて簡単に説明します  await非同期プログラミングの使い方.
例えば、HttpClientのPostAsyncは、Http POST要求を非同期で呼び出す.
  public async Task PostAsync(string url, string strJson)//post      
        {
            try
            {
                HttpContent content = new StringContent(strJson);
                content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                // HttpClient    Post  
                HttpResponseMessage res = await client.PostAsync(url, content);
                if (res.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    Thread.Sleep(1000);//    1     
                    string str = res.Content.ReadAsStringAsync().Result;
                    return str;
                }
                else
                    return null;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
呼び出しの作成方法:
C# async await异步编程简要介绍_第1张图片
非同期POSTが返す情報を取得し、いくつかの動作を行うための非同期メソッドをさらに記述する.
        /// 
        ///          ,      POST     ,       。
        /// 
        /// POST    
        /// POST   json     
        /// 
        private async Task GetContentAsync(string url, string strJson)
        {
            HttpClientHelper cl = new HttpClientHelper();
            var content = await cl.PostAsync(url, strJson);
            textBox6.Text = content;
            return content;
        }
テストの例:
 private void button19_Click(object sender, EventArgs e)
        {
            InputText();
            jsonStuInfo stuInfo = new jsonStuInfo();
            stuInfo.sTID = this.sTID;
            stuInfo.nChildTID = this.nChildTID;
            string url = this.address + "Api_TestProc_Paper_GetPaperInfo";
            string strJson = JsonConvert.SerializeObject(stuInfo);
            var zipTeaInfo = GetContentAsync(url, strJson);
            textBox6.Text = zipTeaInfo.IsCompleted.ToString();
        }
C# async await异步编程简要介绍_第2张图片

ここで返される情報は暗号化されており、文字化されているわけではありません.