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技術做一份貢獻。-----------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM