使用委托开启一个线程,参数传递,以及获取线程的返回数值。
例子:
Action ac = ThreadMethod1;
ac.BeginInvoke(null,null);
注意;
委托开启的线程都是后台线程,后台线程会随着前台线程的关闭而自动关闭
源代码:
/***
*学习使用委托开启线程
*
* 注意;
* 委托开启的线程都是后台线程,后台线程会随着前台线程的关闭而自动关闭
*
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace 委托开启线程
{
class Program
{
/// <summary>
/// 委托开启线程,不带参数
/// </summary>
public void Test1()
{
Action ac = Thread1;
ac.BeginInvoke(null, null);
//Console.ReadLine();
}
public void Thread1()
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine("线程1");
}
}
/// <summary>
/// 委托开启线程,带一个参数
/// </summary>
public void Test2()
{
Action<int> ac = Thread2;
ac.BeginInvoke(22, null, null);
Console.ReadLine();
}
public void Thread2(int num)
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine("线程2 + 参数" + num);
}
}
/// <summary>
/// 委托开启线程,带两个参数
/// </summary>
public void Test3()
{
Action<int,int> ac = Thread3;
ac.BeginInvoke(22, 33, null, null);
Console.ReadLine();
}
public void Thread3(int num1, int num2 )
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine("线程2 + 参数" + num1 + num2);
}
}
static void Main(string[] args)
{
Program obj = new Program();
//obj.Test1();
obj.Test2();
// Console.ReadKey();
}
}
}