线裎里面传递参数问题解决方案

/*
需要明确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;
  }

 }

posted @ 2006-03-20 11:19  jhtchina  阅读(1044)  评论(1编辑  收藏  举报