zoukankan      html  css  js  c++  java
  • 线裎里面传递参数问题解决方案

    /*
    需要明确Form知道线程结束后要干什么。
    举个例子:
    比如我需要在线程结束之后,刷新Form上Label的内容。
    这样,可以定义一个delegate,让线程结束之后回调刷新Label这个方法。
    以下是示例代码,Class1也可以是Form这个类。
    */


    class Class1
    {

      [STAThread]
      
    static void Main(string[] args)
      
    {
       Class1 c 
    = new Class1();
       ThreadWrapper tw 
    = new ThreadWrapper(new Callback(c.PrintResult), 100);
       
    // 线程开始
       tw.Start();
       Console.ReadLine();
      }

                      
       
    // 打印结果,用于回调
      public void PrintResult(int result)
      
    {
       Console.WriteLine(
    "Result:   " + result.ToString());
      }

     }


     
    // 回调代理
     public delegate void Callback(int n);

     
    class ThreadWrapper
     
    {  
      
    public readonly Thread mThread;

      
    private Callback callback;

      
    private int n;

       
    // 参数1:用于回调的代理
       
    // 参数2:需要计算的值
      public ThreadWrapper(Callback callback, int arg)
      
    {
          
    this.callback = callback;
          ThreadStart myThreadDelegate 
    = new ThreadStart(this.Run);
          
    this.mThread = new Thread(myThreadDelegate);
          
    this.n = arg;
      }


     
    // 线程的对外接口
      public void Start()
      
    {
          
    this.mThread.Start();
      }


      
    // 需要在线程里调用的方法
      public void Run()
      
    {
          
    int result = this.Caculate(this.n);
          callback(result);
      }


      
    private int Caculate(int n) 
      
    {
          
    return n*100;
      }

     }

  • 相关阅读:
    zabbix笔记之计算型监控项详解
    zabbix笔记之磁盘IO介绍
    zabbix笔记之Graphtree配置
    zabbix笔记之告警时远程执行命令
    zabbix笔记之异常优化
    zabbix笔记之IPMI配置
    基本的sql 语句
    socket 套接字
    调用父类的三种方法
    实例属性和类属性
  • 原文地址:https://www.cnblogs.com/jhtchina/p/353871.html
Copyright © 2011-2022 走看看