using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace 等待句柄与回调函数方式接受线程结果
{
class Program
{
/// <summary>
/// 委托开启线程,传参,且接受线程的返回数值,用”等待句柄“
/// </summary>
public void Test1()
{
Func<int, int> fu = DownLoadFile;//给委托注册方法
//IAsyncResult表示异步调用的状态
IAsyncResult result = fu.BeginInvoke(100, null, null);
bool boolResult = result.AsyncWaitHandle.WaitOne(3000);//等待8秒
if (boolResult)
{
//取得结果
int intResult = fu.EndInvoke(result);
Console.WriteLine("线程返回的数值= " + intResult);
}
else
{
Console.WriteLine("规定时间内,线程没有取得子线程的结果");
}
}
public int DownLoadFile(int num)
{
Console.WriteLine("下载很多文件");
Thread.Sleep(5000);
return num + 2000;
}
static void Main(string[] args)
{
Program obj = new Program();
obj.Test1();
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace 等待句柄与回调函数方式接受线程结果
{
class Program
{
/// <summary>
/// 委托开启线程,传参,且接受线程的返回数值,用”等待句柄“
/// </summary>
public void Test1()
{
Func<int, int> fu = DownLoadFile;//给委托注册方法
//IAsyncResult表示异步调用的状态
IAsyncResult result = fu.BeginInvoke(100, null, null);
bool boolResult = result.AsyncWaitHandle.WaitOne(3000);//等待8秒
if (boolResult)
{
//取得结果
int intResult = fu.EndInvoke(result);
Console.WriteLine("线程返回的数值= " + intResult);
}
else
{
Console.WriteLine("规定时间内,线程没有取得子线程的结果");
}
}
public int DownLoadFile(int num)
{
Console.WriteLine("下载很多文件");
Thread.Sleep(5000);
return num + 2000;
}
static void Main(string[] args)
{
Program obj = new Program();
obj.Test1();
Console.ReadKey();
}
}
}