+ -
当前位置:首页 → 问答吧 → 这个异步基础,看不懂

这个异步基础,看不懂

时间:2011-12-11

来源:互联网

class Program
  {
  private static int newTask(int ms)
  {
  Console.WriteLine("任务开始");
  Thread.Sleep(ms);
  Random random = new Random();
  int n = random.Next(10000);
  Console.WriteLine("任务完成");  
  return n;  
  }  
  private delegate int NewTaskDelegate(int ms);  
  static void Main(string[] args)  
  {  
  NewTaskDelegate task = newTask;  
  IAsyncResult asyncResult = task.BeginInvoke(2000, null, null);  
  int result = task.EndInvoke(asyncResult); // EndInvoke方法将被阻塞2秒
  Console.WriteLine(result);  
  }  
  }

请问,task.BeginInvoke,是怎么来的?委托中,没有这个方法啊?
查了下MSDN,BeginInvoke的返回值类型是DispatcherOperation这个东西啊,不是IAsyncResult接口啊
请解释一下异步?能否给一个异步编程的基础链接,百度么有

作者: dfsc24   发布时间: 2011-12-11

delegate 的 BeginInvoke 

NewTaskDelegate task = newTask;

private delegate int NewTaskDelegate(int ms);  
  
http://msdn.microsoft.com/zh-cn/library/0b1bf3y3.aspx

作者: fangxinggood   发布时间: 2011-12-11

Control.BeginInvoke  

delegate.BeginInvoke  
不是一个概念。可能楼上链接贴错了。

作者: Sandy945   发布时间: 2011-12-11

引用 2 楼 sandy945 的回复:

Control.BeginInvoke

delegate.BeginInvoke
不是一个概念。可能楼上链接贴错了。


是贴错了。。。@__@ 

作者: fangxinggood   发布时间: 2011-12-11

http://msdn.microsoft.com/zh-cn/library/2e08f6yc.aspx

话说 delegate 应该说是一个语法糖,delegate并翻译成一个类并有四个方法: .ctor, Invoke, BeginInvoke, EndInvoke。这个类继承于 MulticastDelegate

作者: fangxinggood   发布时间: 2011-12-11

作者: Sandy945   发布时间: 2011-12-12