什么是异步编程?
采用异步编程是为了解决等待磁盘IO而造成的性能瓶颈问题。
什么时候应用异步编程?
你在请求一个Web服务的时候,需要进行网络传输资源,这时候就可以开一个新的线程去处理这些工作,主线程不必等待传输的完成。总的来说在网络编程、IO和数据库读写都可以使用异步编程。
Demo Time!
首先我们写一个小例子来理解一下什么是异步编程。
建一个Winphone程序,我们在OnNavigatedTo函数中调用一个AsyncFunction方法让线程休息2秒(你也可以让他做点别的事情),打印出OnNavigatedTo函数和AsyncFunction函数执行的开始、结束,代码如下:
protected override void OnNavigatedTo(NavigationEventArgs e) { txt.Text = "OnNavigatedTo开始执行"+"-->"; AsyncFunction(); txt.Text += "OnNavigatedTo执行结束" + "-->"; } private async void AsyncFunction() { txt.Text += "AsyncFunction开始执行" + "-->"; await Task.Delay(2000); txt.Text += "AsyncFunction执行结束"; }
执行结果:
从执行结果我们可以看到,程序从OnNavigatedTo方法进入,调用AsyncFunction方法后,开了一个新的线程去执行AsyncFunction中的语句,主线程没有等待,继续执行。
有没有感觉很爽?