zoukankan      html  css  js  c++  java
  • 同步+TASK异步请求

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading.Tasks;
    using System.Net;
    using System.Web;
    using System.IO;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 按钮事件,异步事件,获取结果,非UI堵塞
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private async void button1_Click(object sender, EventArgs e)
            {
                string getstr=await GetHttpPostStringAsync(this.textBox1.Text);
                this.textBox2.Text=getstr;
            }
    
            /// <summary>
            /// 异步请求,返回请求结果
            /// </summary>
            /// <param name="Url">请求地址</param>
            /// <returns>参数列表</returns>
            public async Task<string> GetHttpPostStringAsync(string Url)
            {
                return await Task.Run<string>(() =>
                {
                    return  HttpPost(Url);
                });
    
                //Invoke(new Action(() => { }));
                //Action<int> act = new Action<int>((i) => {  i=i + 1; });  
                //Func<int, string> func = new Func<int, string>((i) =>
                //    {
                //        return (i + 1).ToString();
                //    });
            }
        
            /// <summary>
            /// HTTP POST请求
            /// </summary>
            /// <param name="Url">URL地址</param>
            /// <param name="postDataStr">参数字符串</param>
            /// <returns>返回结果</returns>
            public string HttpPost(string Url, string postDataStr = "")
            {
                string responseData = "";
                HttpWebResponse response;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = postDataStr.Length;
                request.Timeout = 1000;
    
                try
                {
                    byte[] bs = Encoding.ASCII.GetBytes(postDataStr);
                    Stream reqStream = request.GetRequestStream();
    
                    reqStream.Write(bs, 0, bs.Length);
                    reqStream.Close();
                    response = (HttpWebResponse)request.GetResponse();
                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    responseData = reader.ReadToEnd().ToString();
                    reader.Close();
                    request.Abort();
                    response.Close();
                    
                }
                catch (Exception ee)
                {
                    responseData = ee.ToString();
                }
                return responseData;
            }
    
            /// <summary>
            /// 按钮事件。请求结果。UI堵塞
            /// </summary>
            /// <param name="sender">按钮</param>
            /// <param name="e"></param>
            private void button2_Click(object sender, EventArgs e)
            {
                this.textBox2.Text = HttpPost(this.textBox1.Text);
            }
    
        }
    
    }
    

      

  • 相关阅读:
    數據從一個DB寫入另外一個DB
    js 控制下拉菜單的刷新
    Ajax 加載數據庫中的圖片
    Win7 註冊表 刪除登陸帳號
    產生隨機數
    借助AjaxControlToolkit实现百度搜索时的下拉列表提示
    解决"Windows 安装程序不允许从远程桌面连接安装"
    中文转换成数字金额C#【转】
    让你的Visual Studio 2010自动添加头部注释信息【转】
    C# 图片识别(支持21种语言)【转】
  • 原文地址:https://www.cnblogs.com/Jeely/p/11004180.html
Copyright © 2011-2022 走看看