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

个人网站可以做app吗百度统计代码

个人网站可以做app吗,百度统计代码,做潮鞋的网站和平台,网站如何做3d产品一、BackgroundWorker 概念 BackgroundWorker 是 C# 中用于在后台线程中运行操作的组件,它允许你在不影响用户界面(UI)响应能力的情况下执行耗时操作。 它位于 System.ComponentModel 命名空间内,主要用于 Windows 窗体应用程序中…

一、BackgroundWorker 概念

  • BackgroundWorker 是 C# 中用于在后台线程中运行操作的组件,它允许你在不影响用户界面(UI)响应能力的情况下执行耗时操作。

  • 它位于 System.ComponentModel 命名空间内,主要用于 Windows 窗体应用程序中,以处理那些可能需要较长时间才能完成的任务,如文件处理、网络请求、大数据计算等。

二、BackgroundWorker 主要特点

  • 多线程操作 :创建一个单独的后台线程来执行耗时操作,这个线程与主线程(通常负责 UI 更新)分开,使得 UI 能够保持响应,不会因为后台任务而卡死。

  • 进度报告 :可以向主线程报告后台操作的进度,例如在复制文件时显示进度条,让用户了解任务的进展情况。

  • 支持取消操作 :允许在后台任务执行过程中取消操作,提供更好的用户体验,用户可以根据需要随时停止正在进行的长时间任务。

 三、BackgroundWorker 的主要成员

 属性

  • WorkerSupportsCancellation:获取或设置一个值,该值指示 BackgroundWorker 是否支持异步取消操作。如果将其设置为 true,则可以通过 CancelAsync 方法取消正在进行的后台操作

  • WorkerReportsProgress:获取或设置一个值,该值指示 BackgroundWorker 是否将报告进度更新。如果为 true,则可以在后台操作中调用 ReportProgress 方法向主线程报告进度。

  • IsBusy:获取一个值,该值指示 BackgroundWorker 是否正在运行异步操作。当后台任务正在执行时,该属性为 true,否则为 false

方法 : 

  • RunWorkerAsync:启动异步操作。在后台线程中开始执行 DoWork 事件处理程序指定的任务。

  • CancelAsync:请求取消异步操作。如果 WorkerSupportsCancellation 属性设置为 true,则调用此方法会将 CancellationPending 属性设置为 true,后台操作可以检查该属性来决定是否取消任务。

  • ReportProgress:在后台操作中报告进度更新。如果 WorkerReportsProgress 属性设置为 true,则可以调用此方法向主线程发送进度信息。

 事件

  • DoWork:当调用 RunWorkerAsync 方法时发生。这是后台任务的主要执行逻辑所在位置。在处理此事件时,需要注意不能在该事件处理程序中直接操作 UI 元素,因为此事件是在后台线程中触发的。

  • ProgressChanged:当在后台操作中调用 ReportProgress 方法时发生。在主线程中处理此事件,可以在此处更新 UI 组件以显示进度信息,如进度条的值、状态文本等。

  • RunWorkerCompleted:当后台操作已完成、被取消或引发异常时发生。在主线程中处理此事件,可以在此处执行一些任务完成后的操作,如启用或禁用 UI 元素、处理任务结果等。

四、BackgroundWorker 使用示例 

示例场景

在一个 Windows 窗体应用程序中,需要从网络下载一个较大的文件,为了避免下载过程中 UI 界面卡死,并且能够显示下载进度,同时允许用户取消下载任务,可以使用 BackgroundWorker。

代码实现

  1. 在窗体设计器中添加控件

添加一个 BackgroundWorker 组件(通过工具箱拖放到窗体上)并命名为 backgroundWorker1,同时添加一个按钮(用于开始下载)、一个进度条(用于显示下载进度)和一个标签(用于显示下载状态)。 

     2.设置 BackgroundWorker 的属性

this.backgroundWorker1.WorkerReportsProgress = true;
this.backgroundWorker1.WorkerSupportsCancellation = true;

     3.编写事件处理代码

// 开始下载按钮的点击事件
private void btnStartDownload_Click(object sender, EventArgs e)
{if (!backgroundWorker1.IsBusy){// 启动后台任务backgroundWorker1.RunWorkerAsync();}
}// BackgroundWorker 的 DoWork 事件处理程序
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{BackgroundWorker worker = sender as BackgroundWorker;// 模拟下载过程for (int i = 0; i <= 100; i++){if (worker.CancellationPending){e.Cancel = true;break;}// 报告进度worker.ReportProgress(i);System.Threading.Thread.Sleep(100); // 模拟耗时操作}
}// BackgroundWorker 的 ProgressChanged 事件处理程序
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{// 更新进度条和状态标签progressBar1.Value = e.ProgressPercentage;lblStatus.Text = $"下载进度:{e.ProgressPercentage}%";
}// BackgroundWorker 的 RunWorkerCompleted 事件处理程序
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{if (e.Cancelled){lblStatus.Text = "下载已取消";}else if (e.Error != null){lblStatus.Text = $"下载出错:{e.Error.Message}";}else{lblStatus.Text = "下载完成";}progressBar1.Value = 0;
}

4.取消下载按钮的点击事件

private void btnCancelDownload_Click(object sender, EventArgs e)
{if (backgroundWorker1.IsBusy){// 请求取消后台任务backgroundWorker1.CancelAsync();}
}

 示例说明

  • 在这个示例中,当用户点击开始下载按钮时,BackgroundWorker 开始执行后台任务,模拟下载过程并定期报告进度。

  • 主线程中的进度条和状态标签会根据进度更新,让用户了解下载进度。

  • 用户可以随时点击取消下载按钮来取消后台任务,BackgroundWorker 会根据 CancellationPending 属性的状态来决定是否取消任务。

五、BackgroundWorker 使用注意事项 

  • 避免在 DoWork 事件中访问 UI 元素 :DoWork 事件是在后台线程中触发的,而 UI 元素只能在主线程中进行访问和修改。如果需要更新 UI,应该通过 ReportProgress 方法在 ProgressChanged 事件中进行操作。

  • 正确处理异常 :在 DoWork 事件处理程序中可能会出现异常,可以通过将异常存储在 DoWorkEventArgs 的 Error 属性中来传递给 RunWorkerCompleted 事件处理程序,在 RunWorkerCompleted 事件中进行异常处理。

  • 合理设置 WorkerReportsProgress 和 WorkerSupportsCancellation 属性 :如果不需要报告进度或支持取消操作,可以将相应的属性设置为 false,以简化代码逻辑。

  • 避免过度使用 BackgroundWorker :虽然 BackgroundWorker 提供了方便的多线程操作方式,但过多的后台线程可能会导致系统资源占用增加,影响程序性能。在设计程序时,应合理评估任务的并发性和资源需求,避免滥用。

http://www.dtcms.com/wzjs/167039.html

相关文章:

  • 乌鲁木齐建设委员会网站百度seo怎么查排名
  • thinkphp做网站中央新闻频道直播今天
  • 360站长工具seo网络宣传的好处
  • 电脑网站你懂我意思正能量搜索竞价排名
  • 报社网站建设方案外贸seo站
  • 室内设计网站国外营销软文500字
  • wordpress 下列主题不完整_没有主题样式表和模板.seo销售代表招聘
  • 登录网站后没有转页面宁波seo服务快速推广
  • 遂宁市建设银行网站什么软件能搜索关键词能快速找到
  • 先备案 做网站企业网站制作公司
  • 网站建设要架服务器网上教育培训机构哪家好
  • jiathis wordpress汕头seo服务
  • 营销型网站建设式球磨机谷歌seo优化技巧
  • 日本网站设计欣赏北京seo外包
  • 网站建设功能seoseo培训机构
  • wordpress 邮件函数seo网站排名厂商定制
  • 购物网站建设教程百度软件市场
  • 安阳做网站的公司2024年重大政治时事汇总
  • 成都高端网站建设公司沈阳seo优化
  • 做网站公司无锡产品策划推广方案
  • 怎么做网站文字优化排行榜哪个网站最好
  • 做土地租赁买卖的网站有哪些青岛建站seo公司
  • 企业公司网站制作建设模板网站建站哪家好
  • react 做网站杭州网站建设
  • 深圳天琥室内设计学校外贸seo软文发布平台
  • 做网站需要多少资金seo需要培训才能找到工作吗
  • 定制开发响应式网站郑州网站优化哪家好
  • 服饰网站建设 e-idea想学销售去哪培训
  • 网站建设分几步国家大事新闻近三天
  • 猪八戒网网站建设市场推广方案范文