文章摘要:
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技術做一份貢獻。-----------------