打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#异步多线程(访问主线程控件)
在多线程的情况下,其它线程无法直接调用到主线程上的控件,只能通过代理来实现主线程上控件的调用。

1、定义委托
  // 执行任务的委托声明(解决长任务死假)
  delegate void RunTaskDelegate(int seconds);
  // 显示进度条的委托声明(跨线程调用控件)
  delegate void ShowProgressDelegate(int totalStep, int currentStep);
2、定义方法
  private void ShowProgress(int totalStep, int currentStep)
  {
    progressBar1.Maximum = totalStep;
    progressBar1.Value = currentStep;
  }
3、定义线程
  private void RunTask(int seconds)
  {
    ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress);
    for (int i = 0; i < seconds * 4; i++)
    {
      Thread.Sleep(250);
      // 在基础窗口上调用显示进度条的委托
      this.Invoke(showProgress, new object[] { seconds * 4, i + 1 });
    }
  }
4、执行
  RunTaskDelegate runTask = new RunTaskDelegate(RunTask);
  // 异步调用执行任务的委托
  runTask.BeginInvoke(20, null, null);
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
多线程 进度条 C# .net
再谈 Windows 窗体多线程
秒杀多线程第四篇 一个经典的多线程同步问题
python3多线程核心理解
说说上古时代的主线程模式
C#多线程应用:子线程更新主窗体控件的值(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服