关于回调函数 不懂!!!!!!!!!!!!!!!!!!!
Fun 是我的工作函数 我用委托来异步调用,这个回调函数会在Fun结束后调用 而且是在调用Fun的这个线程中 我就不懂了 为什么不直接把回调函数的内容加到Fun里,而非要用这个CallBack函数呢?CallBack不是紧跟在Fun结束就调用吗?
我在这里完全看不出回调函数有什么作用 请哪位给我讲解一下!
谢谢了!!!
class Program
{
private delegate void IFun();
public static void Fun()
{
Console.WriteLine( "Fun Start,the Fun 's Thread is {0} ",Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
Console.WriteLine( "Fun End ");
}
public static void CallBack(IAsyncResult iar)
{
Console.WriteLine( "CallBack Start,the Thread is {0} ",Thread.CurrentThread.ManagedThreadId);
IFun iFun = (IFun)(iar.AsyncState);
Console.WriteLine( "CallBack End ");
}
static void Main(string[] args)
{
Console.WriteLine( "Main Thread is {0} ", Thread.CurrentThread.ManagedThreadId);
IFun iFun = new IFun(Fun);
IAsyncResult iar = iFun.BeginInvoke(CallBack,iFun);
Console.WriteLine( "Main is Over ");
Console.Read();
}
}
------解决方案--------------------一个比较简单直接的例子,你看AcdSee里看第一张图片的时候,第二张是后台自动加载的(是不是开一个线程不知道),也就是说你看第一张,跟他自动加载第二张是异步执行的(通俗点就是互不干扰)