本帖最后由 slyzly 于 2011-07-11 17:37:54 编辑

解决方案 »

  1.   

    this.SafeInvoke(() =>
    {
      tsStatus.Text = "准备完毕";
    });转换成this.SafeInvoke(delegate ()
    {
      tsStatus.Text = "准备完毕";
    });
      

  2.   

    anonymous methods(匿名方法)
    this.SafeInvoke(delegate
    {
       tsStatus.Text = "准备完毕";
    });
      

  3.   

     public static void SafeInvoke(this Control control, InvokeHandler handler)
      {
    其中的this该怎么转换呢?this Control在.net2.0里面会报错
      

  4.   

    Lambda表达式可以理解成一个委托。比如(man=>man.Name),=>左边的man是函数的传入参数,=>右边就是这个函数返回的结果,等价的函数形式就象下面这样:string GetName(Man man)
    {
          return man.Name;
    }
      

  5.   

    .net 2.0没有扩展方法。去掉这个this,改为一般的static方法即可。不过,其他的原代码可有的改了。
      

  6.   


    谢谢大家回答,目前改成了这样,不知道有没有问题,希望大家帮忙看下。
     public static class ControlCrossThreadCalls
        {
     public delegate void InvokeHandler();
     public static void SafeInvoke(Control control, InvokeHandler handler)
            {
                if (control.InvokeRequired)
                {
                    control.Invoke(handler);
                }
                else
                {
                    handler();
                }
            }

    调用ControlCrossThreadCalls.SafeInvoke(this, new ControlCrossThreadCalls.InvokeHandler(delegate()
                            {
                                tsTotal.Text = "当前项:" + itemIndex + "/" + lvInfo.Items.Count;
                                tsResult.Text = "成功";
                            }));
      

  7.   

    其中能给两个控件赋值吗?
    tsTotal.Text = "当前项:" + itemIndex + "/" + lvInfo.Items.Count;
      tsResult.Text = "成功";