异步委托开启线程Funk<> f=Text;注,这是一个匿名委托,后面的Text是方法名,前面Funk的<>里面天的是参数
{
f.BeginInvoke();利用这个方法可以开启线程,括号内的参数,除了最后两个,前面的依次对应方法的参数,倒数第二个参数是回调函数,最后一个是委托对象
IAsyncResult ar = f.BeginInvoke();当开启线程时,我们定义一个异步结果来接收当前异步委托状态,持续进行,直到拿到返回值为止。
bool b = ar.AsyncWaitHandle.WaitOne(50);这句话的意思是等待50毫秒,如果在等待时间里有结果,就执行后续,如果没有,就什么都不做。
}
{
// f.BeginInvoke(20, "张三", BackObject, f);
Func<int, string, int> f = Text;
f.BeginInvoke(20, "张三", ar =>
{
int res = f.EndInvoke(ar);
Console.WriteLine(res);
}, f);
Console.ReadKey();
}
{
//Thread thread = new Thread(Text);
//thread.Start("123");
MyThread my = new MyThread();
Thread thread = new Thread(my.GetThread);
thread.Start("123");
}
{
//第一种任务开启的方式
//Task t = new Task(Text);//任务开启的方法不能含参数
//t.Start();
//第二种任务开启的方式任务工厂
TaskFactory task = new TaskFactory();
task.StartNew(Text);
Console.ReadKey();//一般线程结束都需要暂停或者结束语句
}