using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
//多播委托
namespace ConsoleApp2
{
public delegate double Calc(double x,double y);
internal class Program
{
static void Main(string[] args)
{ //创建学生实例
Student stu1 = new Student() { ID = 1, PenColor = ConsoleColor.Yellow };
Student stu2 = new Student() { ID = 2, PenColor = ConsoleColor.Green };
Student stu3 = new Student() { ID = 3, PenColor = ConsoleColor.Red };
//创建委托
//Action action1 = new Action(stu1.Homework);
//Action action2 = new Action(stu2.Homework);
//Action action3 = new Action(stu3.Homework);
//调用委托 单播委托 用一个委托封装一个方法的使用形式
//action1.Invoke();
//action2.Invoke();
//action3.Invoke();
//多播委托
//action1 += action2;// 把action2合并到action1里边
//action1 += action3;// 把action3也合并到action1里边 现在action1里边封装了3个方法
//action1.Invoke();
//Thread显式异步调用
//Thread thread1 =new Thread(new ThreadStart(stu1.Homework));
//Thread thread2 = new Thread(new ThreadStart(stu2.Homework));
//Thread thread3 = new Thread(new ThreadStart(stu3.Homework));
//thread1.Start();
//thread2.Start();
//thread3.Start();
//
Task task1 = new Task(new Action(stu1.Homework));
Task task2 = new Task(new Action(stu2.Homework));
Task task3 = new Task(new Action(stu3.Homework));
task1.Start();
task2.Start();
task3.Start();
for (int i=0;i<10;i++)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Main thread {0}", i);
Thread.Sleep(1000);
}
}
}
class Student
{
public int ID { get; set; }
public ConsoleColor PenColor { get; set; }
public void Homework()
{
for(int i = 0; i < 5; i++)
{
Console.ForegroundColor = this.PenColor;
Console.WriteLine("Student{0} doing homework {1}hour(s).", this.ID, i);
Thread.Sleep(1000);
}
}
}
}
C#委托 学习代码
最新推荐文章于 2024-07-19 08:56:24 发布