第二十章:异步和文件I/O.(十三)
通过该开销,可以开始实际编写应用程序。 TextFileAsyncPage的XAML文件与TextFileTryoutPage相同,但必须将代码隐藏文件设置为使用异步文件I / O方法。 必须在此处捕获文件I / O函数中可能发生的任何异常,这意味着任何可以抛出异常的方法必须与await运算符一起位于try块中:
public partial class TextFileAsyncPage : ContentPage
{FileHelper fileHelper = new FileHelper();public TextFileAsyncPage(){InitializeComponent();RefreshListView();}async void OnSaveButtonClicked(object sender, EventArgs args){saveButton.IsEnabled = false;string filename = filenameEntry.Text;if (await fileHelper.ExistsAsync(filename)){bool okResponse = await DisplayAlert("TextFileTryout","File " + filename +" already exists. Replace it?","Yes", "No");if (!okResponse)return;}string errorMessage = null;try{await fileHelper.WriteTextAsync(filenameEntry.Text, fileEditor.Text);}catch (Exception exc){errorMessage = exc.Message;} if (errorMessage == null){filenameEntry.Text = "";fileEditor.Text = "";RefreshListView();}else{await DisplayAlert("TextFileTryout", errorMessage, "OK");}saveButton.IsEnabled = true;}async void OnFileListViewItemSelected(object sender, SelectedItemChangedEventArgs args){if (args.SelectedItem == null)return;string filename = (string)args.SelectedItem;string errorMessage = null;try{fileEditor.Text = await fileHelper.ReadTextAsync((string)args.SelectedItem);filenameEntry.Text = filename;}catch (Exception exc){errorMessage = exc.Message;}if (errorMessage != null){await DisplayAlert("TextFileTryout", errorMessage, "OK");} }async void OnDeleteMenuItemClicked(object sender, EventArgs args){string filename = (string)((MenuItem)sender).BindingContext;await fileHelper.DeleteAsync(filename);RefreshListView();}async void RefreshListView(){fileListView.ItemsSource = await fileHelper.GetFilesAsync();fileListView.SelectedItem = null;}
}
结果是,此代码的结构非常类似于使用同步文件I / O函数的先前代码。 但是,一个区别是OnSaveButtonClicked方法在开始处理时禁用“保存”按钮,然后在完成所有操作后重新启用它。 这只是为了防止多次按下Save按钮,这可能导致多次重复调用FileIO.WriteFileAsync。
这是在三个平台上运行的程序:
大家要是喜欢,支持一下,打开你的支付宝,搜索栏输入“9654711”,领红包你赚我也赚。
第二十章:异步和文件I/O.(十三)相关推荐
- 鸟哥的Linux私房菜(服务器)- 第二十章、WWW 伺服器
第二十章.WWW 伺服器 最近更新日期:2011/08/05 我們最常講的『架站』其實就是架設一個 Web 網站啦!那麼什麼是 Web 呢?那就是全球資訊廣播的意思 (World Wide Web), ...
- 鸟哥的Linux私房菜(基础篇)- 第二十章、启动流程、模块管理与 Loader
第二十章.启动流程.模块管理与 Loader 最近升级日期:2009/09/14 系统启动其实是一项非常复杂的程序,因为核心得要侦测硬件并加载适当的驱动程序后,接下来则必须要呼叫程序来准备好系统运行的 ...
- activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 修改dts后重编译_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像
1)摘自[正点原子]领航者 ZYNQ 之linux驱动开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?& ...
- 【正点原子Linux连载】第二十章 V4L2摄像头应用编程-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 【正点原子FPGA连载】 第二十章 LCD触摸屏实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...
- 第十章、epub文件处理 -- 样式处理
https://github.com/geometer/FBReaderJ 第十章.epub文件处理 -- 样式处理 这一章的内容比较简单,因为第九章中集中了篇幅介绍显示的流程,所以把处理样式的流程单 ...
- 【正点原子STM32连载】第二十章 基本定时器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...
- 【正点原子MP157连载】第二十章 字符设备驱动开发-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 异步下载文件 java_在浏览器中异步下载文件监听下载进度
在浏览器中异步下载文件,其实就是把服务器响应的文件先保存在内存中.然后再一次下载到磁盘.第二次下载过程,就是把内存的数据IO到磁盘,没有网络开销.速度极快. 之所以要先保存在内存,主要是可以在下载开始 ...
最新文章
- php 自留地,重蔚自留地php基本语法-函数(附代码)
- access 按日期分列_excel的分列功能居然这么强大,赶紧收藏起来
- jquery终止函数
- 区别于传统低效标注,两种基于自然语言解释的数据增强方法
- linux监控命令详解
- SmartFoxServer资料
- system 无法以 sysdba 登录,提示:权限不足。
- [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(RNN/GRU/LSTM)
- mingw w64 v8.0.0_MinGW+OpenGL
- 计算机应用基础253页答案,计算机应用基础作业一(答案)
- 安全电子签章密码技术规范_「签签课堂」(四)一篇读懂电子合同的专业术语...
- [深度学习]基于TensorFlow的基本深度学习模型
- 浪潮之巅第十一章 — 幕后的英雄:风险投资(Venture Capital)
- printf 打印结构体成员函数出错原因分析
- building workspace问题
- 高数_向量代数_单位向量_向量与坐标轴的夹角
- Win7系统下文件或程序无法选择默认打开方式如何解决
- Max GCD(暴力)
- 慕了!17年阿里Java开发大佬把Spring Boot的精髓都总结出来了
- 北京市社保定点医疗机构查询【2021年1月】
热门文章
- linux源码包卸载方式
- a different object with the same identifier value was already associated with the session
- javascript全栈开发实践-准备
- kubernetes学习笔记之十三:基于calico的网络策略入门
- 类执行方法的过程与运行时
- 一个装作异步的代码段
- Linux下使用mv重命名文件或者移动文件(增强版的工具为rename)
- 转:C#中Monitor对象与Lock关键字的区别分析
- The JVM Architecture Explained-JVM架构解析(译)
- LINUNX下PHP下载中文文件名代码