解决方案 »

  1.   

    //进度条更新委托
    这部分怎么减缩成 
    this.Invoke(new Action(() =>
                {
                    
                }));
    形式的,因为有两个参数,不知道怎么传
      

  2.   

    http://msdn.microsoft.com/zh-cn/library/system.threading.thread.aspx Thread类只有这几种构造,你那么写编译没问题?
      

  3.   

    ThreadStart==>fThread.Start();
      

  4.   

    这代码真的能跑? private void SetTextMessage(int i, int total)
            {
                if (this.InvokeRequired)
                {
                    SetPos setpos = new SetPos(SetTextMessage);
                    this.Invoke(setpos, new object[] { i,total });
                }
            }
    这里不是死循环么
      

  5.   

    Action 是个泛型委托,可以这样加参数:
                this.Invoke(new Action<string, string, int>((x, k, y) => 
                {
                    //ToDo                
                }), new object[] { "1", "2", 3 });
      

  6.   


    多参数的就这样写呗:
    this.Invoke(new Action(()=>{方法(参数1,参数2,参数3);}))
      

  7.   

    Thread fThread = new Thread( new ThreadStart(similarpro));
    首先肯定是多线程了,不然更新时,你UI线程可能会卡。
    new ThreadStart(similarpro),实际就是实例化了一个委托对象,这个对象对应的方法是similarpro。
    当然也可以下列几种写法:
    Thread fThread = new Thread( 
        new ThreadStart(
            ()=>{
                //定义action委托对应方法需要的参数
                object p;
                //更新UI线程上的控件,必须用Invoke,跨线程的更新,只有4个方法是安全的,Invoke就是其中之一。
                this.Invoke(
                    new action(
                        ()=>{//更新逻辑}
                    ),p
                );
            }
        )
    );
    fThread.Start()
    这种是线程不带参数的写法。下面这种是线程带参数的写法
    object threadParameter;
    Thread fThread = new Thread( 
        new ParameterizedThreadStart()
        {
            ...这里上面一样。
        }
    );
    fThread.Start(threadParameter);
      

  8.   

    不是 我想问的是Thread fThread = new Thread( new ThreadStart(similarpro)); 跟Thread fThread = new Thread(similarpro); 有什么区别  为什么都行呢..
      

  9.   

    Thread fThread = new Thread(similarpro); 直接这样写也不会卡死 都是正常的