//Delegate类提供了BeginInvoke()和EndInvoke()方法,BeginInvoke()返回IAsyncResult类型,通过该类型的IsCompleted来判断委托是否完成了任务
public delegate int TakeAWhileDelegate(int data, int ms);
static void Mains()
{
TakeAWhileDelegate d1 = TakesAWhile;
IAsyncResult ar = d1.BeginInvoke(1, 3000,null, null);
while (!ar.IsCompleted)
{
Console.WriteLine(".");
Thread.Sleep(50);
}
int result = d1.EndInvoke(ar);
Console.WriteLine("result:{0}", result);
if (ar.IsCompleted)
{
Console.ReadLine();
}
}
static int TakesAWhile(int data, int ms)
{
Console.WriteLine("TakesAWhile started");
Thread.Sleep(ms);
Console.WriteLine("TakesAWhile completed");
return ++data;
}
public delegate int TakeAWhileDelegate(int data, int ms);
static void Mains()
{
TakeAWhileDelegate d1 = TakesAWhile;
IAsyncResult ar = d1.BeginInvoke(1, 3000,null, null);
while (!ar.IsCompleted)
{
Console.WriteLine(".");
Thread.Sleep(50);
}
int result = d1.EndInvoke(ar);
Console.WriteLine("result:{0}", result);
if (ar.IsCompleted)
{
Console.ReadLine();
}
}
static int TakesAWhile(int data, int ms)
{
Console.WriteLine("TakesAWhile started");
Thread.Sleep(ms);
Console.WriteLine("TakesAWhile completed");
return ++data;
}