匿名委托开启线程

异步委托开启线程Funk<> f=Text;注,这是一个匿名委托,后面的Text是方法名,前面Funk的<>里面天的是参数

f.BeginInvoke();利用这个方法可以开启线程,括号内的参数,除了最后两个,前面的依次对应方法的参数,倒数第二个参数是回调函数,最后一个是委托对象

IAsyncResult ar = f.BeginInvoke();当开启线程时,我们定义一个异步结果来接收当前异步委托状态,持续进行,直到拿到返回值为止。

bool b = ar.AsyncWaitHandle.WaitOne(50);这句话的意思是等待50毫秒,如果在等待时间里有结果,就执行后续,如果没有,就什么都不做。

           Func<int, string, int> f = Text;
            //  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();//一般线程结束都需要暂停或者结束语句

}

猜你喜欢

转载自www.cnblogs.com/TJL5201314/p/9711754.html