zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    fetch用法说明
    正则表达式贪婪与非贪婪模式
    export ,export default 和 import 区别 以及用法
    理解MVC 框架
    HTTP 请求方法介绍
    Http协议--请求报文和响应报文
    一、Web 如何工作的
    前端工程师进阶之路-总纲
    前端知识体系之CSS及其预处理器SASS/LESS
    进度条
  • 原文地址:https://www.cnblogs.com/jordan2009/p/1602407.html
Copyright © 2011-2022 走看看