using System;
using System.Collections.Generic;
using System.Text;delegate void WorkStarted();
delegate void WorkProgressing();
delegate int WorkCompleted();class Worker
{
public void DoWork()
{
Console.WriteLine("工作: 工作开始");
if (started != null) started(); Console.WriteLine("工作: 工作进行中");
if (progressing != null) progressing();
Console.WriteLine("“工作: 工作完成”");
if (completed != null)
{
foreach (WorkCompleted wc in completed.GetInvocationList())//GetInvocationList是啥啊?
{
wc.BeginInvoke(new AsyncCallback(WorkGraded), wc);//这句话啥意思?asynccallbakc是啥东西?
}
} } private void WorkGraded(IAsyncResult res) {
WorkCompleted wc = (WorkCompleted)res.AsyncState;//这句话啥意思?res.AsyncState是啥意思?
int grade = wc.EndInvoke(res);//这句话啥意思?
Console.WriteLine("工人的工作得分=" + grade);
}
public event WorkStarted started;
public event WorkProgressing progressing;
public event WorkCompleted completed;
}class Boss
{
public int WorkCompleted()
{
System.Threading.Thread.Sleep(3000);
Console.WriteLine("Better..."); return 6; /* 总分为10 */
}
}class Universe
{
static void WorkerStartedWork()
{
Console.WriteLine("Universe notices worker starting work");
}
static int WorkerCompletedWork()
{
System.Threading.Thread.Sleep(4000);
Console.WriteLine("Universe is pleased with worker's work");
return 7;
} static void Main()
{
Worker peter = new Worker();
Boss boss = new Boss();
peter.completed += new WorkCompleted(boss.WorkCompleted);
peter.started += new WorkStarted(Universe.WorkerStartedWork);
peter.completed += new WorkCompleted(Universe.WorkerCompletedWork); peter.DoWork(); Console.WriteLine("Main: 工人工作完成");
Console.ReadLine(); }
}
using System.Collections.Generic;
using System.Text;delegate void WorkStarted();
delegate void WorkProgressing();
delegate int WorkCompleted();class Worker
{
public void DoWork()
{
Console.WriteLine("工作: 工作开始");
if (started != null) started(); Console.WriteLine("工作: 工作进行中");
if (progressing != null) progressing();
Console.WriteLine("“工作: 工作完成”");
if (completed != null)
{
foreach (WorkCompleted wc in completed.GetInvocationList())//GetInvocationList是啥啊?
{
wc.BeginInvoke(new AsyncCallback(WorkGraded), wc);//这句话啥意思?asynccallbakc是啥东西?
}
} } private void WorkGraded(IAsyncResult res) {
WorkCompleted wc = (WorkCompleted)res.AsyncState;//这句话啥意思?res.AsyncState是啥意思?
int grade = wc.EndInvoke(res);//这句话啥意思?
Console.WriteLine("工人的工作得分=" + grade);
}
public event WorkStarted started;
public event WorkProgressing progressing;
public event WorkCompleted completed;
}class Boss
{
public int WorkCompleted()
{
System.Threading.Thread.Sleep(3000);
Console.WriteLine("Better..."); return 6; /* 总分为10 */
}
}class Universe
{
static void WorkerStartedWork()
{
Console.WriteLine("Universe notices worker starting work");
}
static int WorkerCompletedWork()
{
System.Threading.Thread.Sleep(4000);
Console.WriteLine("Universe is pleased with worker's work");
return 7;
} static void Main()
{
Worker peter = new Worker();
Boss boss = new Boss();
peter.completed += new WorkCompleted(boss.WorkCompleted);
peter.started += new WorkStarted(Universe.WorkerStartedWork);
peter.completed += new WorkCompleted(Universe.WorkerCompletedWork); peter.DoWork(); Console.WriteLine("Main: 工人工作完成");
Console.ReadLine(); }
}
using System;
using System.Collections.Generic;
using System.Text;delegate void WorkStarted();
delegate void WorkProgressing();
delegate int WorkCompleted();class Worker
{
public void DoWork()
{
Console.WriteLine("工作: 工作开始");
if (started != null) started(); Console.WriteLine("工作: 工作进行中");
if (progressing != null) progressing(); Console.WriteLine("“工作: 工作完成”");
if (completed != null)
{
foreach (WorkCompleted wc in completed.GetInvocationList())
//Delegate.GetInvocationList 方法
//public virtual Delegate[] GetInvocationList()
//返回值:委托构成的数组,表示当前委托的调用列表。
{
wc.BeginInvoke(new AsyncCallback(WorkGraded), wc);
//异步调用wc这个代理,WorkGrade是回调函数,wc是传给回调函数的对象(类似与参数)
}
} } private void WorkGraded(IAsyncResult res)
{
WorkCompleted wc = (WorkCompleted)res.AsyncState;//回调函数接受调用函数传给他的对象,就是刚才的wc
int grade = wc.EndInvoke(res);//故名思议:结束调用
Console.WriteLine("工人的工作得分=" + grade);
} public event WorkStarted started;
public event WorkProgressing progressing;
public event WorkCompleted completed;
}class Boss
{
public int WorkCompleted()
{
System.Threading.Thread.Sleep(3000);
Console.WriteLine("Better..."); return 6; /* 总分为10 */
}
}class Universe
{
static void WorkerStartedWork()
{
Console.WriteLine("Universe notices worker starting work");
}
static int WorkerCompletedWork()
{
System.Threading.Thread.Sleep(4000);
Console.WriteLine("Universe is pleased with worker's work");
return 7;
} static void Main()
{
Worker peter = new Worker();
Boss boss = new Boss();
peter.completed += new WorkCompleted(boss.WorkCompleted);
peter.started += new WorkStarted(Universe.WorkerStartedWork);
peter.completed += new WorkCompleted(Universe.WorkerCompletedWork); peter.DoWork(); Console.WriteLine("Main: 工人工作完成");
Console.ReadLine();
}
}