我现在想在线程里自定义一个传参委托,但是不知道不能用,望高手指点

解决方案 »

  1.   

    线程本来就能传一个Object型的参数
      

  2.   

    fun a(object o){}
    Thread td=new Thread(new ParameterizedThreadStart(a));
    td.IsBackground()
    td.start(int i)//传参数不用委托...
      

  3.   

    private/public 类型/void a(object o)
    {
        代码....
    }
    td.IsBackground=true;
      

  4.   

    可能是我表达得不是很清楚,意思就是:线程里不是要执行一个方法吗?现在我就是想这个方法能传参数,而这个参数类型就是worksheet类型的
      

  5.   

    楼主想要传泛型参数?
    using System;
    using System.Threading;namespace showjim.sys.threading
    {
        public struct genericParameter<parameterType>
        {
            private Action<parameterType> Handle;
            private parameterType Parameter;
            public genericParameter(Action<parameterType> handle, parameterType parameter)
            {
                Handle = handle;
                Parameter = parameter;
            }
            public Thread start()
            {
                Thread thread = new Thread(new ParameterizedThreadStart(ParameterThread));
                thread.Start();
                return thread;
            }
            private void ParameterThread(object parameter)
            {
                genericParameter<parameterType> value = (genericParameter<parameterType>)parameter;
                value.Handle(value.Parameter);
            }
            public static Thread start(Action<parameterType> handle, parameterType parameter)
            {
                return new genericParameter<parameterType>
                {
                    Handle = handle,
                    Parameter = parameter
                }.start();
            }
        }
    }
      

  6.   

    传什么类型都可以阿,反正是object类,拆下箱就可以了,委托传参你要实现什么效果,线程进行一定程度的时候,再由外部送参数近来?如果使这样的需求,那你可以做一个触发..
      

  7.   

    我现在是把一个导出数据的方法放到线程中去,但是这个方法必须传一个worksheet类型的参数
      

  8.   

    8楼代码有错,修改并扩展一下
    using System;
    using System.Threading;namespace showjim.sys.threading
    {
        public struct genericParameter<parameterType>
        {
            private Action<parameterType> Handle;
            private parameterType Parameter;
            public genericParameter(Action<parameterType> handle, parameterType parameter)
            {
                Handle = handle;
                Parameter = parameter;
            }
            public Thread start()
            {
                Thread thread = new Thread(new ThreadStart(ParameterThread));
                thread.Start();
                return thread;
            }
            private void ParameterThread()
            {
                Handle(Parameter);
            }
            public static Thread start(Action<parameterType> handle, parameterType parameter)
            {
                return new genericParameter<parameterType>(handle, parameter).start();
            }
        }
        public struct genericParameter<parameterType, returnType>
        {
            private Func<parameterType, returnType> Handle;
            private Action<returnType> OnReturn;
            private parameterType Parameter;
            public genericParameter(Func<parameterType, returnType> handle, parameterType parameter, Action<returnType> onReturn)
            {
                Handle = handle;
                Parameter = parameter;
                OnReturn = onReturn;
            }
            public Thread start()
            {
                Thread thread = new Thread(new ThreadStart(ParameterThread));
                thread.Start();
                return thread;
            }
            private void ParameterThread()
            {
                returnType returnValue = Handle(Parameter);
                if (OnReturn != null) OnReturn(returnValue);
            }
            public static Thread start
                (Func<parameterType, returnType> handle, parameterType parameter, Action<returnType> onReturn)
            {
                return new genericParameter<parameterType, returnType>(handle, parameter, onReturn).start();
            }
        }
    }
      

  9.   

    Thread thread = new genericParameter(处理方法, 参数).start();
      

  10.   

    可以像4楼一样传object,然后做参数转换