首页 新闻 会员 周边 捐助

c#中异步回调的问题,不明白每个参数都是干什么的。

0
悬赏园豆:20 [已解决问题] 解决于 2010-04-24 19:12

代码如下:

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\Cal
lbackTest\Program.cs:行号 23
   在 System.Runtime.Remoting.Messaging.AsyncResult.SyncProcessMessage(IMessage
msg)
   在 System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMe
ssage msg, IMessageSink replySink)
   在 System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Ob
ject o)
   在 System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state
)
   在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, C
ontextCallback callback, Object state)
   在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)

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行的参数都是干什么的啊?

plokmijnnjimkolp的主页 plokmijnnjimkolp | 初学一级 | 园豆:180
提问于:2010-04-23 20:59
< >
分享
最佳答案
0

del.BeginInvoke(Fun2,null);

其中的null,应该改为 del;

因为你在Fun2中取得的实例需要显示传递进去..

所以你会出现空指针

收获园豆:20
天地不仁 | 初学一级 |园豆:130 | 2010-04-23 21:52
呵呵,确实加入del就没问题了,谢谢哈~~
plokmijnnjimkolp | 园豆:180 (初学一级) | 2010-04-24 19:12
其他回答(1)
0

友情帮顶

钢的锅 | 园豆:10 (初学一级) | 2010-04-23 23:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册