ATAPI.dll MakeCall 导致 ObjectDisposedException

问题描述

我正在使用 Julmar ATAPI 创建一个允许通过 TAPI 接听和拨打电话的应用程序。 对于大多数电话系统,它运行良好。但是使用 3CX 我在调用时遇到异常:

tapi = new Tapimanager("AwesomeApp");
tapi.Initialize();
tapi.Lines[cbLines.Selectedindex].Open(MediaModes.All);
line = tapimanager.Lines[cbLines.Selectedindex];
line.MakeCall(tbPhoneNumber.Text);

MakeCall-Line 抛出以下异常:

Name: ObjectdisposedException
Source: mscorlib
Site: Void DangerousAddRef(Boolean ByRef)
Message: Das SafeHandle wurde geschlossen. //The SafeHandle has been closed.
StackTrace:    bei System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)
   bei System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle,Boolean& success)
   bei JulMar.Atapi.Interop.NativeMethods.lineGetCallStatus(HTCALL hCall,IntPtr lpCallStatus)
   bei JulMar.Atapi.TapiCall.GatherCallStatus()
   bei JulMar.Atapi.TapiCall..ctor(TapiAddress addrOwner,UInt32 hCall)
   bei JulMar.Atapi.TapiAddress.MakeCall(String address,Int32 countryCode,MakeCallParams param)
   bei System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   bei System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   ...

我现在一无所知,因为到目前为止测试的 Swyx、NFON 和 bintec elmeg 上没有出现这个问题。

我发现 this post 引用了 an issue of the ATAPI Project,但我不太明白需要为修复做什么,但我感觉目的是创建一个自己的 MakeCall功能?至少我没有看到任何 ATAPI 调用。该应用程序是 x64 客户端上的 x64 部署。

现在......即使我没有更多的代码可以提供,并且一个可重现的示例几乎是不可能的,因为这甚至可能是依赖于客户端的事情,我希望你能给我一些关于正在发生的事情的提示可能导致此错误的背景。这是 ATAPI 内部的错误吗?这是由 TAPI 提供程序引起的问题吗?这是我可以在代码解决的问题吗?

编辑:来电似乎有效...那么为什么这只发生在 MakeCall 期间? EDIT2:根据线路功能支持 MakeCall。

在此先非常感谢您!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)