【问题标题】:Lync NotInitializedException uncatchable on windows 8Lync NotInitializedException 在 Windows 8 上无法捕获
【发布时间】:2013-12-27 03:24:37
【问题描述】:

我使用 lync Sdk 将 Lync 对话停靠在我自己的 wfp 应用程序中。 问题是,当我尝试像这样停靠对话时:

public void Dock(Conversation conversation, IntPtr host)
{
  try
  {
    ConversationWindow window = _automation.GetConversationWindow(conversation);
    if (window.State == ConversationWindowState.Initialized)
    {
      window.Dock(host);
    }
  }
  catch (Exception ex)
  {
  }
}

有时,window.State 在验证和停靠之间发生变化,在 Windows 8 上,生成的异常似乎无法捕获,并导致我的应用程序崩溃,而在 Windows 7 上,异常只是捕获。

异常类型为 Microsoft.Lync.Model.NotInitializedException

【问题讨论】:

  • 您能否使用 Application (App.cs) DispatcherUnhandledException 事件捕获异常?
  • 不,我已经使用 OnDispatcherUnhandledException 捕获了未处理的异常,但似乎根本没有引发异常并且应用程序只是崩溃了。
  • 能贴出抛出异常的线程的调用栈吗?如果它不在调度程序线程上,并且该线程不是由您启动的,您可能必须在AppDomain 级别捕获它。
  • 使用反汇编程序并查看该异常的定义,看它是否继承自 Exception。微软有不遵守他们告诉我们要遵守的规则的习惯。例如,捕获 SQL 异常通常需要捕获基本 sql 异常类,否则您将永远无法捕获它们。您还可以明确地捕获该异常类型
  • 是的,我试图明确地捕获错误,但在这种情况下它不起作用。对不起我迟到的答案。我会尝试使用您建议的反汇编程序。谢谢。

标签: c# windows-8 try-catch lync-client-sdk


【解决方案1】:

我发现 Lync 可能对它在哪个线程上执行操作非常挑剔。我们见过的一些最奇怪的行为是当调用应该在创建会议/对话的线程上进行时,而是在另一个线程上调用。没有看到异常绝对是这些场景中的怪事之一。

如果我是你,我会专门创建一个线程来执行 Lync 操作,并在需要时将这些操作插入其中(可能带有任何回调以使界面美观整洁)。

如果您只是想检查线程是否是您的问题,您可以随时将这些调用发送到 WPF 调度程序以进行确认(一旦确认,如果您不想锁定 UI,则需要拥有自己的线程模型)

【讨论】:

    【解决方案2】:

    没有答案,只是一个建议。您也可以尝试在此处发布您的问题:

    Lync Client Developer Forum

    如果您的问题是错误,则会引起产品团队的注意。如果没有,您的问题也有可能得到解答并解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多