紧急求帮助,一个CALLBACK的回调系统异常

totolwang 2008-04-23 03:30:27
大家好

首相我得到的一个异常是这个:
对“INTACT!IntactSystem.MainInterface+CallBack::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。"

搜索了网上说是MDA 的CallbackOnCollectedDelegate 问题,说把异常里面的选项给静止就好了,但是我用的是VS2008, 在调试里面没发现异常这个选择项目...代码如下: 这个代码我在VS2005里面运行一点问题都没有...不知道为什么会在VS2008有错误...请大家救救我

public partial class MainInterface : Window
{
public delegate string CallBack(int num);
[DllImport("Sandu.dll", EntryPoint = "Plugin_Tel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern bool Plugin_Tel(int port);

[DllImport("Sandu.dll", EntryPoint = "Setup_Tel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern void Setup_Tel(CallBack fPost2User, int getall);

[DllImport("Sandu.dll", EntryPoint = "GetNumber_Tel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]

public static extern string GetNumber_Tel(int port);

public static string GetNumber(int num)
{
string telAddress = GetNumber_Tel(1);
MessageBox.Show(telAddress);
return telAddress;
}
public MainInterface()
{
Setup_Tel(numberCallBack, 0);
}



感谢大家,本人分数有限度,,,不好意思啦,,感谢能帮助我解决问题,,
...全文
1389 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
keyuming 2010-09-12
  • 打赏
  • 举报
回复
楼主好人, 原来我的也是垃圾回收的问题,谢谢
oioixiabings 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 totolwang 的回复:]
最后自己搞定,希望能帮助同样有问题的同志们..+一句 private static CallBack numberCallBack;



最后还有一个问题

请教大家,,,我有2个电话涵数,第一个是用CALLBACK一起用然后每次有人打电话来的时候取得电话号码.第二个是来检查电话机是摘机还是挂机的...但是第二个只有涵数,请问我该放在系统什么地方或者怎么调用,才能让系统时时刻刻都监视……
[/Quote]
请问你是在做USBbox电话盒的二次开发吗?如是,我们可交流一下。
这种情况可用事件完成。
skyrickie 2009-09-27
  • 打赏
  • 举报
回复
还是使用 totolwang 的方法解决问题了
lov52e0 2008-05-27
  • 打赏
  • 举报
回复
CALLID给垃圾回收了,所以注意被给回收掉就行啦
totolwang 2008-04-24
  • 打赏
  • 举报
回复
有人耐心的看看我的问题吗???摆脱啊,,,老是说我类型的已垃圾回收委托进行了回调了啊???拜托...
totolwang 2008-04-24
  • 打赏
  • 举报
回复
自己弄好了,就是把STATIC给弄掉,呵呵


还有一个问题啊,那个垃圾回收我用的时候,还是有30%的机会出错误啊...请问有谁知道吗

这玩意我用了之后还是会有错错误有的时候

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
还是这个错误提示,咋弄呢?9958

对“INTACT!IntactSystem.MainInterface+CallBack::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。"
totolwang 2008-04-24
  • 打赏
  • 举报
回复
最后自己搞定,希望能帮助同样有问题的同志们..+一句 private static CallBack numberCallBack;



最后还有一个问题

请教大家,,,我有2个电话涵数,第一个是用CALLBACK一起用然后每次有人打电话来的时候取得电话号码.第二个是来检查电话机是摘机还是挂机的...但是第二个只有涵数,请问我该放在系统什么地方或者怎么调用,才能让系统时时刻刻都监视着,一但电话机被拿起来就知道了???求救,,别人说用TIME空件.第一WPF好象没有TIME空件吧???当人家把电话拿起来的时候我不能还一直去检查吧,这样太浪费资源了...所以请教

例如这句

bool plug = Plugin_Tel(1);
if (!plug)
{
MessageBox.Show("Please Plug the CallID Device Application is Closing Now!!!", title, MessageBoxButton.OK);
this.Close();
}


我只会放WINDOW_LODED里面...只能检查启动时候一次,请问我怎么检查如果人家在使用的过程中???能帮忙一下吗???感谢


leixueqiyi 2008-04-23
  • 打赏
  • 举报
回复
VS2008配置
possible_Y 2008-04-23
  • 打赏
  • 举报
回复
VS2005里面运行一点问题都没有...不知道为什么会在VS2008有错误???

你说的是运行时exception还是指编译错误?
totolwang 2008-04-23
  • 打赏
  • 举报
回复
自己顶顶
totolwang 2008-04-23
  • 打赏
  • 举报
回复
自己已经搞定了,就是没垃圾回收,,,呵呵,,,
正确代码如下:

namespace namespace
public delegate string CallBack(int num);

public partial class MainInterface : Window
{
[DllImport("Sandu.dll", EntryPoint = "Plugin_Tel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern bool Plugin_Tel(int port);

[DllImport("Sandu.dll", EntryPoint = "Setup_Tel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern void Setup_Tel(CallBack fPost2User, int getall);

[DllImport("Sandu.dll", EntryPoint = "GetNumber_Tel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]

public static extern string GetNumber_Tel(int port);

public static string GetNumber(int num)
{
string telAddress = GetNumber_Tel(1);
MessageBox.Show(telAddress);
return telAddress;
}
public MainInterface()
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
Setup_Tel(numberCallBack, 0);
}



不过又有一个小新问题就是....请问怎么取得这个回调涵数值啊,现在我每次都是返回
MessageBox.Show(telAddress);
我想把这个telAddress放在一个变量里面然后再存到数据库里面去的,可是现在怎么弄呢??那个全局变量弄不进去啊...拜托各位帮帮忙吧

110,580

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧