c# 异步处理什么意思?

如题所述

程序处理一个步骤,返回结果,你再在结果的基础上动作,返回结果之前只能等着,这算是同步。
异步的时候,就不等了,先干别的。追问

能否写个小例子?谢谢!

追答

看看技术博客就明白了

参考资料:http://blog.csdn.net/Come_On_steven/archive/2009/07/08/4332249.aspx

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-02
异步,比如,小李让小张帮忙去打饭,这时小李不知道小张何时回来,在这段时间内小李可以做一些其他的事情,只是小张打饭回来了通知小李就ok。所以异步就是接收方不知道发送方什么时候发送,所以发送的信息中就要有提示接收方开始接收信息的。
还有一种是针对多线程而言,在多线程中有同步和异步之分,如果使用同步表示这些线程可能存在资源竞争的情况(比如生产者消费者问题)。如果不存在资源竞争的情况那么就可以使用异步处理的形式,当异步线程调用完毕的时候通知主线程。
异步和多线程的区别
这个经常搞混了,因为在平时编写程序的时候,只要使用多线程不采用同步机制,那么都可以理解成为是异步的处理。
但是今天我们还是要弄清楚他们之间的区别。异步编程中开发者不用操心线程,代码中不会出现线程语句。因为,采用异步的时候,.NET已经自动创建了异步线程了,不用人为的再去创建线程了。(PS:创建线程,线程调度,优化系统线程池这些事情都由系统自己处理。)
例如:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DDD aaa = new DDD();
((Action)aaa.ccc).BeginInvoke(null, null);
Console.WriteLine("干完了吗?");
Console.ReadKey();
}
}
public class DDD
{
public void ccc()
{
Console.WriteLine("刚刚干完。");
}
}
}
总之:多线程是一种技术,而异步就是用多线程来实现的。
如何实现一个异步调用

使用异步Ping其他机器
Ping ping = new Ping();
ping.SendAsync(IPAddress,Int32,Object) //尝试异步方式向指定的IPAddress的计算机发送Internet控制消息协议(ICMP)会送消息,并从该计算机接收相应的ICMP会送答复消息。
使用异步访问web页面
void Execute()
{

//构建HttpWebRequest对象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(item.Config);
request.Timeout = int.Parse(ConfigurationManager.AppSettings["WebTimeOut"]);
//构建WebRequestItem对象,将监控对象与HttpWebRequest包含在其中
WebRequestItem webItem = new WebRequestItem { Item = item, httpRequest = request }; //这个WebRequestItem 对象自己构件。
//异步访问页面
IAsyncResult result = request.BeginGetResponse(new AsyncCallback(IGetResponse), webItem); //异步访问,并将webItem参数传递给异步回调函数IGetResponse(IAsyncResult)
}
void IGetResponse(IAsyncResult result)
{

//获取传入的WebRequestItem对象
WebRequestItem webItem = (WebRequestItem)result.AsyncState;
//获取WebRequestItem对象中的HttpWebRequest请求
HttpWebRequest request = webItem.httpRequest;

//异步访问页面
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);

if (response.StatusCode == HttpStatusCode.OK) //能够成功访问
{
//TODO:
}
}