通过该开销,可以开始实际编写应用程序。 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.(十三)相关推荐

  1. 鸟哥的Linux私房菜(服务器)- 第二十章、WWW 伺服器

    第二十章.WWW 伺服器 最近更新日期:2011/08/05 我們最常講的『架站』其實就是架設一個 Web 網站啦!那麼什麼是 Web 呢?那就是全球資訊廣播的意思 (World Wide Web), ...

  2. 鸟哥的Linux私房菜(基础篇)- 第二十章、启动流程、模块管理与 Loader

    第二十章.启动流程.模块管理与 Loader 最近升级日期:2009/09/14 系统启动其实是一项非常复杂的程序,因为核心得要侦测硬件并加载适当的驱动程序后,接下来则必须要呼叫程序来准备好系统运行的 ...

  3. activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  4. 修改dts后重编译_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像

    1)摘自[正点原子]领航者 ZYNQ 之linux驱动开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?& ...

  5. 【正点原子Linux连载】第二十章 V4L2摄像头应用编程-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  6. 【正点原子FPGA连载】 第二十章 LCD触摸屏实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  7. 第十章、epub文件处理 -- 样式处理

    https://github.com/geometer/FBReaderJ 第十章.epub文件处理 -- 样式处理 这一章的内容比较简单,因为第九章中集中了篇幅介绍显示的流程,所以把处理样式的流程单 ...

  8. 【正点原子STM32连载】第二十章 基本定时器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  9. 【正点原子MP157连载】第二十章 字符设备驱动开发-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  10. 异步下载文件 java_在浏览器中异步下载文件监听下载进度

    在浏览器中异步下载文件,其实就是把服务器响应的文件先保存在内存中.然后再一次下载到磁盘.第二次下载过程,就是把内存的数据IO到磁盘,没有网络开销.速度极快. 之所以要先保存在内存,主要是可以在下载开始 ...

最新文章

  1. php 自留地,重蔚自留地php基本语法-函数(附代码)
  2. access 按日期分列_excel的分列功能居然这么强大,赶紧收藏起来
  3. jquery终止函数
  4. 区别于传统低效标注,两种基于自然语言解释的数据增强方法
  5. linux监控命令详解
  6. SmartFoxServer资料
  7. system 无法以 sysdba 登录,提示:权限不足。
  8. [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(RNN/GRU/LSTM)
  9. mingw w64 v8.0.0_MinGW+OpenGL
  10. 计算机应用基础253页答案,计算机应用基础作业一(答案)
  11. 安全电子签章密码技术规范_「签签课堂」(四)一篇读懂电子合同的专业术语...
  12. [深度学习]基于TensorFlow的基本深度学习模型
  13. 浪潮之巅第十一章 — 幕后的英雄:风险投资(Venture Capital)
  14. printf 打印结构体成员函数出错原因分析
  15. building workspace问题
  16. 高数_向量代数_单位向量_向量与坐标轴的夹角
  17. Win7系统下文件或程序无法选择默认打开方式如何解决
  18. Max GCD(暴力)
  19. 慕了!17年阿里Java开发大佬把Spring Boot的精髓都总结出来了
  20. 北京市社保定点医疗机构查询【2021年1月】

热门文章

  1. linux源码包卸载方式
  2. a different object with the same identifier value was already associated with the session
  3. javascript全栈开发实践-准备
  4. kubernetes学习笔记之十三:基于calico的网络策略入门
  5. 类执行方法的过程与运行时
  6. 一个装作异步的代码段
  7. Linux下使用mv重命名文件或者移动文件(增强版的工具为rename)
  8. 转:C#中Monitor对象与Lock关键字的区别分析
  9. The JVM Architecture Explained-JVM架构解析(译)
  10. LINUNX下PHP下载中文文件名代码