C#又没一种向线程里传值方法,可以在传完值后,线程里的控件还能显示值?

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:47:07
我现在必须用循环开启多线程,每个线程的方法基本相同,只是有一个变量不同,所以我需要向里面传一个参数,但是我知道的几种办法都是把线程的方法封成类或者改成静态的,但是我必须在这个线程里用主窗体的控件,该怎么办呢?希望高手指教下啊,能答出的绝对追加高分啊!

可以尝试使用一个带参数的委托处理你所面临的问题,
同时 跨线程访问控件时候,可以考虑使用Control.Invoke方式异步调用该委托即可.

线程的委托是c#自己定义的..这个委托并不能带参数..

我一般处理是在当前窗口定义一个static string str; 把str的值可以传到你要执行的方法里面..线程里的控件显示值..这个..我倒没试过..所以不知道.呵呵.

用.NET提供的线程池可实现,且在线程数不确定时,即动态生成新线程时性能会更好,如实现Socket服务端.

ThreadPool.QueueUserWorkItem(new WaitCallback(PooledFunc),"参数");

static void PooledFunc(object state)
{

Console.WriteLine("传过来的参数: '{0}'", (string)state);

}

即用ThreadPool.QueueUserWorkItem代替以下几句
Thread a=new Thread(new ThreadStart(PooledFunc));
a.Start();