Dragon in the sky

whatever happened , go ahead! Happy life of big pig and its dog.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#异步多线程 [摘]

Posted on 2009-12-23 16:12  龙泰  阅读(349)  评论(0编辑  收藏  举报

在多线程的情况下,其它线程无法直接调用到主线程上的控件,只能通过代理来实现主线程上控件的调用。
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);

 

来自:http://www.tansea.cn/article.asp?id=119