1

我们目前正在尝试将 Lync 通信 (Lync SDK 2010) 合并到我们的应用程序中,但我们遇到了's的VideoWindows( CaptureVideoWindow, RenderVideoWindow) 的问题:它们始终为空,即使在成功调用. 连接肯定建立了。我们可以谈。我们自己的视频显示在远程 Lync 客户端中。是。从到到。AVModalityVideoChannelBeginStartAVModalityStateConnectedVideoChannelStateConnectingReceiveSend

我们何时以及如何尝试访问它们并不重要:直接在 之后BeginStart,在AsyncCallbackBeginStart,响应各种状态变化或响应外部触发(用户点击事件);在主/UI线程或事件/回调线程中。两个视频窗口始终为空。

在示例应用程序“%PROGRAMFILES%\Microsoft Lync\SDK\Samples\AudioVideoConversation”中,一切都按预期工作:一旦BeginStart完成,我们就可以访问非空视频窗口。在我们的小型独立原型项目中,它也可以工作。但在我们的实际应用中,它没有。

我们已经仔细检查了所有内容,对于可能导致此问题的原因我们真的已经没有想法了。

任何想法,任何提示?我们应该注意什么?

(链接到相应的 MSDN 论坛主题)

更新(2012 年 7 月 4 日,欧洲中部时间 15:46):

当我们查看 VideoChannel 的成员时,我们发现“Microsoft.Office.Uc”内部发生了 COMException:加载 DLL 时出错,HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY)。附加截图中的更多细节。

显示异常的调试会话的屏幕截图

我们对此错误进行了一些研究,但没有发现任何对我们有用的东西。任何想法是什么导致异常?

更新(2012 年 7 月 9 日,欧洲中部时间 16:43):

我们做了一些进一步的测试......

我们的软件由一个主应用程序和许多通过MEF加载的类似插件的“应用程序”组成。我们创建了一个进行视频通话的最小测试应用程序:视频窗口不起作用(如预期的那样)。但是,当我们采用相同的代码并在我们的架构之外创建一个单独的解决方案时,它确实起作用了。所以,这是环境的问题,而不是代码的问题。

起初,我们怀疑 MEF 可能是问题所在。因此,我们将 lync 代码侵入到我们的主应用程序中 - 绕过了整个应用程序架构。还是行不通。

然后我们一点一点地切掉我们的整个系统,直到我们最终达到它确实可以工作的地步。经过几次错误的跟踪,我们终于找到了罪魁祸首...... Quartz.NET

出于某种奇怪的原因,仅仅存在对 Quartz.dll v.1.0.3.3 的程序集引用,即使没有一行 Quartz 代码,也会导致视频窗口无法工作。难以置信,但它是 100% 可重现的:如果我们采用前面提到的测试解决方案,除了添加参考之外什么都不做,它就会停止工作。

知道这样的事情怎么可能吗?

4

1 回答 1

0

我们解决了!有点儿。对 Quartz.NET DLL 的引用以某种方式导致了该问题。更新问题中的更多详细信息。

目前,我们已经删除了使用 Quartz 的组件。我们目前不需要它。

但我仍然有兴趣进一步输入一个参考如何导致这样的问题。

于 2012-07-09T14:50:02.910 回答