多线程无参和有参的处理
static void Main(string[] args)
{
Thread thread1 = new Thread(new ThreadStart(PrintNumbers)); //无参数的委托
thread1.Start();
Thread thread2 = new Thread(new ParameterizedThreadStart(PrintTexts)); //有参数的委托
}
static void PrintTexts(object text)
{
Console.WriteLine("Starting..." + text);
}
static void PrintNumbers()
{
Console.WriteLine("Starting...");
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
}
有多个参数直接使用类来当参数传过去
class AddParams
{
public int a, b;
public AddParams(int numb1,int numb2)
{
a = numb1;
b = numb2;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("添加对象");
Console.WriteLine("线层方法运行ID:{0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = new AddParams(10, 10);
Thread t = new Thread(new ParameterizedThreadStart(Add));
t.Start(ap);
Console.ReadLine();
}
static void Add(object data)
{
if(data is AddParams)
{
Console.WriteLine("线层运行ID:{0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)data;
Console.WriteLine("{0}+{1} is {2}", ap.a, ap.b, ap.a + ap.b);
}
}
}
也可以直接这样写
Counter c1 = new Counter();
var t1 = new Thread(() => TestCounter(c1));
static void TestCounter(Counterc)
{
....
}