当前位置: 首页 > news >正文

如何用dw做网站地图ios开发者网站

如何用dw做网站地图,ios开发者网站,大连品尚茗居装修公司怎么样,新浪网站开发语言1.控件介绍 进度条通常用于显示代码的执行进程进度#xff0c;在一些复杂功能交互体验时告知用户进程还在继续。 在属性栏中#xff0c;有三个值常用#xff1a; Value表示当前值#xff0c;Minimum表示进度条范围下限#xff0c;Maximum表示进度条范围上限。 2.简单实…1.控件介绍 进度条通常用于显示代码的执行进程进度在一些复杂功能交互体验时告知用户进程还在继续。 在属性栏中有三个值常用 Value表示当前值Minimum表示进度条范围下限Maximum表示进度条范围上限。 2.简单实例 在一个界面下点击按钮进度条加载用label显示运行耗时。 在Form1.cs中添加点击Button1按钮功能 private async void button1_Click(object sender, EventArgs e) {Stopwatch stopwatch new Stopwatch();stopwatch.Start();button1.Enabled false;//防止重复点击progressBar1.Value 0;int progressStep 10;for (int i 0; i progressBar1.Maximum; i i progressStep){await Task.Delay(100);progressBar1.Value i;}button1.Enabled true;stopwatch.Stop();label1.Text $运行耗时{stopwatch.ElapsedMilliseconds}ms;MessageBox.Show(ok); }3.异步编程思想 异步编程是一种编程范式它允许程序在执行耗时操作时不阻塞主线程或调用线程从而提高程序的响应性和性能。简单来说异步编程使得程序在等待某些操作如网络请求、文件I/O、数据库查询等的完成时可以继续处理其他任务。 3.1 为什么需要异步编程 在同步编程模式下当程序执行一个耗时操作例如读取文件或从网络获取数据时整个程序会暂停主线程被堵塞直到这个操作完成。这会导致程序变得不可响应特别是在需要处理用户交互的应用程序中。 异步编程通过允许程序处理其他任务而不会被耗时操作阻塞解决了这一问题。例如在用户接口应用程序中异步编程可以防止界面“卡死”从而提升用户体验。 3.2 异步编程流程 功能代码如下模拟一个等待执行 private async Task LoadDataAsync() {await Task.Delay(5000); // 异步等待 5 秒Console.WriteLine(数据加载完成); // 5 秒后执行 }1当线程执行到await关键字标识的位置后系统将方法挂起返回控制权给调用者。 2任务调度器记录 Task.Delay(5000)在 5 秒后标记任务为完成。 35秒后任务调度器标记 Task.Delay(5000) 完成。调度器触发回调通知方法恢复执行。打印数据加载完成。 4在挂起期间用户可以自行操作不会造成UI阻塞。 3.3 await是什么 await是C#中的关键字用于异步编程等待异步操作的完成不会阻塞当前进程。通常与async关键字一起用。 3.4 async是什么 async也是C#中的关键字用于修饰方法、匿名函数或者lambda表达式。通常和await一起用指示他们包含异步操作。 3.5 Task是什么 异步方法通常返回 Task 或 Task 对象表示一个异步操作的进行。 Task 类还可以用于表示和管理异步操作。 以上三个关键字总结async 修饰的方法通常返回 Task 或 Task T 而 await 用于等待任务的完成。 3.6 应用例子 在图形用户界面GUI应用程序中阻塞主线程会导致用户界面变得不可响应。例如如果用户点击一个按钮触发一个耗时操作整个界面会在操作完成之前冻结无法响应用户的其他操作。 单纯摆出异步编程的例子无法体会精髓先用一个同步编程的来对比 同步编程 点击button1按钮开始执行功能代码代码功能放到了另一个方法中去该方法的功能就是单纯进行线程休眠模拟耗时操作。 private void button1_Click(object sender, EventArgs e) {Stopwatch stopwatch new Stopwatch();stopwatch.Start();button1.Enabled false;//防止重复点击Form1Bar.Value 0;int progressStep 10;for (int i 0; i Form1Bar.Maximum; i i progressStep){// 同步方法阻塞UI线程LoadData();Form1Bar.Value i;}button1.Enabled true;stopwatch.Stop();label1.Text $运行耗时{stopwatch.ElapsedMilliseconds}ms;MessageBox.Show(ok); }模拟耗时方法 private void LoadData() {System.Threading.Thread.Sleep(1000);// 会强制阻塞线程 }测试卡死按钮 private void button2_Click(object sender, EventArgs e) {textBox1.Text 异步编程UI未卡死; } private void button3_Click(object sender, EventArgs e) {textBox1.Text string.Empty; }运行过程中无法点击测试按钮UI进程阻塞GUI卡死。 异步编程主窗口进度条 异步编程会挂起当前await的耗时方法不会阻塞当前线程用户可以操作其他。 private async void button1_Click(object sender, EventArgs e) {Stopwatch stopwatch new Stopwatch();stopwatch.Start();button1.Enabled false;//防止重复点击Form1Bar.Value 0;int progressStep 10;for (int i 0; i Form1Bar.Maximum; i i progressStep){// 同步方法阻塞UI线程await LoadData();Form1Bar.Value i;}button1.Enabled true;stopwatch.Stop();label1.Text $运行耗时{stopwatch.ElapsedMilliseconds}ms;MessageBox.Show(ok); }private async Task LoadData() {//System.Threading.Thread.Sleep(5000);// 会强制阻塞线程await Task.Delay(500); }异步编程弹出窗口进度条 Form1作为主界面只放Button1和label1两个控件点击开始后弹出Form2进度条加载。 不仅实现弹出窗口进度条还通过异步编程实现。 关键代码 private async void button1_Click(object sender, EventArgs e) {button1.Enabled false;//防止重复点击Form2 form2 new Form2();form2.Show();Stopwatch stopwatch new Stopwatch();stopwatch.Start();for(int i 0; i form2.Form2Bar.Maximum; i 10){await LoadData();form2.Form2Bar.Value i;}button1.Enabled true;stopwatch.Stop();label1.Text $运行耗时{stopwatch.ElapsedMilliseconds}ms;MessageBox.Show(ok);form2.Close(); }private async Task LoadData() {await Task.Delay(500); }4.更进一步 仔细阅读上述代码可以发现每次进度条加载是通过i来控制的i每次随着休眠结束会自增10这样确实可以均匀控制进度条增长。 但是现在有这样一个问题在实际项目中我们随着处理的数据量不同并不知道每次运行的固定时间换言之可能并不是每次均匀增长一个固定值。 在之前先介绍一下一种特殊的函数-----回调函数 4.1 回调函数 回调函数是指函数通过参数传给另一个函数在满足特定的条件下由后者调用。 在异步编程思想中当某个操作完成后回调函数会被执行处理或相应发生的事件。 下面是一个简单的代码展示 // 定义一个回调函数 void CallbackFunction(string message) {Console.WriteLine(message); }// 定义一个异步函数接受回调函数作为参数 void doSomethingAsync(Actionstring callback) {// 模拟异步操作Task.Run(() {// 模拟一些工作Task.Delay(1000).Wait();// 调用回调函数callback(Operation completed!);}); }// 使用异步函数并传递回调函数 doSomethingAsync(CallbackFunction);CallbackFunction(string message)是一个回调函数当有字符串类型的参数传入时会进行打印操作。 doSomethingAsync(Action callback)是一个异步函数内部含有Task.Run内部模拟了一个耗时异步操作在结束后调用回调函数。 4.2 控制进度条 在不同任务耗时不一样的前提下控制进度条的增长可以通过下面两种方法 1将任务分解成为多个子任务每个任务结束后手动增加更新进度条。看起来一卡一卡的 2通过IProgress T 接口实现任务的进度报告实时更新进度条。进度均匀更优雅 两种方法其实很类似都是需要去做一个标记然后更新。 如果实在无法分割子任务可使用进度条Marquee样式实现类似跑马灯的效果只告诉用户程序在运行不知道结束的时间。 关键代码实例只保留核心部分 progress是一个报告器接受参数触发内部的Lambda回调函数更新进度条。 private async void Button_Click(object sender, EventArgs e) {// 创建一个进度报告器更新进度条var progress new Progressint(percent {progressBar.Value percent; // 更新进度条});// 启动长时间运行的任务await ExecuteLongRunningTask(progress);// ... }private async Task ExecuteLongRunningTask(IProgressint progress) {int totalSteps 100; // 任务的总步数假设任务可以分为100步for (int i 0; i totalSteps; i){// 模拟长时间任务await Task.Delay(100); // 每步等待100毫秒// 报告进度progress.Report((i 1) * 100 / totalSteps);} }
http://www.dnsts.com.cn/news/84029.html

相关文章:

  • 网站管理手册河南省建设厅网站103号文件
  • 免费的网站申请口腔建立网站
  • 品牌网查询网站优化关键词排名怎么做
  • 网站收录平台方法做网站申请个体户
  • 小程序模板好还是源码好三明网站优化
  • 餐饮o2o 网站建设微博网站建设
  • 网站绝对路径wordpress文章点赞
  • 宿州网站建设网站帮朋友做网站
  • 做网站的空间费用要多少贾汪网架公司
  • 高端人才做兼职的招聘网站有哪些简单网页模板代码
  • 如皋网站制作网站建设包含域名
  • 上海网站快速排名网站二级页面怎么做
  • 网站的建设成本广州市地图最新版 高清晰
  • 小清新文章网站教育网站如何做经营
  • 网站更新免费个人博客网站模板下载
  • 上海市住房和城乡建设厅官方网站网站竞价排名
  • 福州专业网站建设价格网络规划与设计就业前景
  • 长沙行业网站建设附近装修公司地址电话
  • 网站开发与设计课程设计北京朝阳区建设工作办公网站
  • wordpress音乐站源码云开放平台
  • 青海网站建设企业简单手工
  • 怎么用php做网站后台程序网站产品链接怎么做的
  • 洛阳网站建设培训学校上海网站制作策
  • 做网站每页面费用学校网站建设管理相关规定
  • 建设部网站 标准定额司服务器网站建设情况
  • 写资料的网站有哪些世界各国gdp排名
  • 一次备案多个网站地方社区网站 备案
  • 沈阳中小企业网站建设做logo那个网站
  • 精密模具东莞网站建设上海做什么工作最赚钱
  • 网站友情链接怎么弄贺州招聘网站建设