C#异步获取服务的方法

在很多的项目开发时,需要服务通过异步方式返回信息并更新相应控件的信息,如图表、列表的定时刷新,如果不通过异步的方式的话,网络缓慢,或者服务较多的话,就会造成主程序的卡顿现象,通过这种方式可以有效的解决卡顿的问题。
1.工具类

public class AsynDataUtils
    {
        DataResultCallBack _callback;
        public void AsynGetData(string tagUrl,DataResultCallBack callback)
        {
            try
            {
                _callback = callback;
                AsyncGetWithWebRequest(tagUrl, new AsyncCallback(ReadCallback));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

      private void ReadCallback(IAsyncResult asynchronousResult)
        {
            try
            {
                var request = (HttpWebRequest)asynchronousResult.AsyncState;
                request.Timeout = 5000;
                request.Method = "GET";
                request.UserAgent = HttpWebResponseUtility.DefaultUserAgent;

                var response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
                using (var streamReader = new StreamReader(response.GetResponseStream()))
                {
                    var resultString = streamReader.ReadToEnd();
                    Console.WriteLine(resultString);
                    if (_callback != null)
                    {
                        _callback(resultString);
                    }
                }
            }
            catch (Exception ex)
            {

            }

        }
        private void AsyncGetWithWebRequest(string url, AsyncCallback callback)
        {
            var request = (HttpWebRequest)WebRequest.Create(new Uri(url));
            request.BeginGetResponse(callback, request);
        }
    }

2.定义一个委托回调

    public delegate void DataResultCallBack(string name,string data);

3.使用方法

 //异步方式请求数据
 new AsynDataUtils().AsynGetData(url, DataResultCallBack);

 //在这个方法里面接收回调的返回信息
 private void DataResultCallBack(string data)
  {
  //解析返回的数据
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值