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

个人网站可以做app吗怎样免费推广自己的网站

个人网站可以做app吗,怎样免费推广自己的网站,怎么用sharepoint做网站,网站 单页一、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/356731.html

相关文章:

  • 做批发的网站有哪些色盲测试卡
  • 帝国做的网站根目录百度后台登录
  • 营销技巧第一季无删减seo知识培训
  • 奉贤网站建设网站制作个人网站制作源代码
  • 直销系统开发教程视频优化是什么意思
  • 江苏品牌网站建设电话十大营销模式
  • 北京哪里有网站建设设计新媒体运营工作是什么
  • 北京做网站建设的公司推广网络公司
  • 静态网站系统成人英语培训班哪个机构好
  • 山东网站建设哪家好小红书信息流广告投放
  • 南昌建设医院官方网站seo关键词搜索和优化
  • 网站运行维护方案软文代写发布网络
  • 网站页面架构图外链发布工具
  • 上海工商网站官网网站建设开发外包公司
  • 北京seo网站管理自己可以做网站吗
  • zen cart 网站google plus建站平台哪家好
  • 怎么做服务器网站吗工具seo
  • 做网站如何报价广州百度seo优化排名
  • 网站名称不能涉及全球搜索网站排名
  • 176网站入口湖南靠谱的关键词优化哪家好
  • 海口做网站公司那家好seo搜索培训
  • 建网站要多少钱关键词排名批量查询
  • 正规品牌网站设计品牌中国seo排行榜
  • 网站没备案可以做商城吗上海seo推广整站
  • 怎么做网站代码东莞网站优化
  • 直播的网站开发谷歌seo 优化
  • pc网站手机网站app销售怎么找客户源
  • 网站开发的背景seo排名第一的企业
  • 无代码做网站武汉百度推广电话
  • 柳州做网站的企业企业网站营销的优缺点及案例