C#人爱学不学9[C#5.0异步实例+WPF自己的MVVM Async应用 1/12]

文章摘要:

1. 通过简单DEMO.让读者理解Task和Task<T>    学习过程中,掌握async和await

2. 理解同步和异步的执行

3. Task.Factory.StartNew()的替代

4. WPF中传统方式async的应用,让界面不卡

5. Ay 自编的无任何组件的 快速的MVVM应用,Async版本,实战DEMO

 

以下DEMO 以vs2013开发 .Net Framework4.5+  控制台程序为主

前言: async标记    await异步执行方法,可返回值可不返回,返回值则async Task<T>    不返回则async Task


实验1:

使用Task.Delay(TimeSpan)担任耗时操作

第一课,理解什么时候Task和Task<T>,同步与异步

 

返现目前是同步的执行,而且AddNum画了绿色的线条,我们使用 .Result()拿到Task返回的值

 

     public MainViewModel()
        {
            this.ImportDataCommand = new DelegateCommand(this.ImportData);
        }

OK,目前为止ViewModel算写完了,很简单吧,我们打开MainWindow,按照MVVM的写法,都是讲ViewModel赋予窗体的DataContext

 public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MainViewModel();
        }

而窗体对应的xaml中 都是binding对应ViewModel能绑定的东西,绑定吧!!!

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowStartupLocation="CenterScreen"
        Title="www.ayjs.net aaronyang" Height="350" Width="525">
    <Grid>
        <Button Content="导入数据" HorizontalAlignment="Left" Command="{Binding ImportDataCommand}" Margin="133,32,0,0" VerticalAlignment="Top" Width="190" Height="26"/>
        <TextBox x:Name="txtResult" HorizontalAlignment="Left" Height="24" Margin="133,87,0,0" TextWrapping="Wrap" Text="{Binding ImportResult}" VerticalAlignment="Top" Width="210"/>

    </Grid>
</Window>

运行吧! 效果一样,主窗体没有阻塞,效果照样能运行.

好了,今天的内容现讲到这里.喜欢的朋友,可以推推荐

 

文章已经迁移: http://www.ayjs.net/post/87.html

 

 

 

 

 

官网阅读:http://www.ayjs.net/post/87.html

 

       =============潇洒的版权线==========www.ayjs.net===== Aaronyang ========= AY =========== 安徽 六安 杨洋 ==========   未经允许不许转载 =========

       -------------------小小的推荐,作者的肯定,读者的支持。推不推荐不重要,重要的是希望大家能把WPF推广出去,别让这么好的技术消失了,求求了,让我们为WPF技术做一份贡献。-----------------

 

posted @ 2015-04-15 14:36  AYUI框架  阅读(3247)  评论(2编辑  收藏  举报