代码如下:
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace CallbackTest
6 {
7 class Program
8 {
9 private delegate void dele();
10 static void Main(string[] args)
11 {
12 dele del =new dele (Fun1);
13 del.BeginInvoke(Fun2,null);
14 Console.ReadLine();
15 }
16 public static void Fun1()
17 {
18 Console.WriteLine("Fun1()");
19 }
20 public static void Fun2(IAsyncResult ar)
21 {
22 dele de = (dele)ar.AsyncState;
23 de.EndInvoke(ar);
24 Console.WriteLine("Fun2()");
25 }
26 }
27 }
编译没问题,运行后出现了未处理的异常:
Fun1()
未处理的异常: System.NullReferenceException: 未将对象引用设置到对象的实例。 在 CallbackTest.Program.Fun2(IAsyncResult ar) 位置 E:\cs\practise\ReadXML\CallbackTest\Program.cs:行号 23 在 System.Runtime.Remoting.Messaging.AsyncResult.SyncProcessMessage(IMessagemsg) 在 System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink) 在 System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Object o) 在 System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)
哪个前辈解释下是什么原因啊?还有,第13行各第23行的参数都是干什么的啊?
del.BeginInvoke(Fun2,null);
其中的null,应该改为 del;
因为你在Fun2中取得的实例需要显示传递进去..
所以你会出现空指针
友情帮顶