| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2571 人关注过本帖
标题:[原创]C#--防止回调函数被垃圾回收站回收
只看楼主 加入收藏
lingsen
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-4-23
收藏
 问题点数:0 回复次数:2 
[原创]C#--防止回调函数被垃圾回收站回收

C#--防止回调函数被垃圾回收站回收



本人在完成一个C#应用程序是调用VC++的DLL库,在调用回调函数时出现了一个让我晕死的问题,回调函数的代码可以执行,但是会出现空的参数引用的错误。
跟过一后发现是一调用回调函数,就挂了,经过洽谈MSDN,发现可能是被垃圾回收器回收了,晕!怎么办呢,试了很我种方法不行,看看在C#里调用回调函数方法
下面是在MSDN里的实现回调函数的一段代码
using System;
using System.Runtime.InteropServices;

public delegate bool CallBack(int hwnd, int lParam);

public class EnumReportApp {

[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);
private static CallBack myCallBack ; //声明回调函数
public static void Main()
{
//CallBack myCallBack = new CallBack(EnumReportApp.Report); //这是原代码
myCallBack = new CallBack(EnumReportApp.Report); //修改后
EnumWindows(myCallBack, 0);
}

public static bool Report(int hwnd, int lParam) {
Console.Write("Window handle is ");
Console.WriteLine(hwnd);
return true;
}
}
我也是根据上面的方法编写的。
应该在new 一个回调函数之前,申明一个全局的就像申明一个全局变量一样简单,就是这样一句话我被蹂躏一天!
搜索更多相关主题的帖子: 回收站 回调 函数 垃圾 
2006-04-23 08:26
google
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:3419
专家分:23
注 册:2005-11-1
收藏
得分:0 
谢谢分享

祝天下所有母亲幸福安康!~
2006-04-24 09:52
dgfoxzhao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-9-19
收藏
得分:0 
现在对委托还是不怎么明白。

黑夜给了我黑色的眼睛,我却用她来寻找光明.
2006-05-18 11:34
快速回复:[原创]C#--防止回调函数被垃圾回收站回收
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016028 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved