我正在设计我正在设计的Lync客户端问题。我正在以UI抑制模式运行Lync 2013,并且可以发送/接收IM的良好,并开始音频通话。但是,当我尝试从其他人那里接收音频对话时,就会发生问题。当我尝试调用此代码时,我会得到一个system.unauthorizedAccessexception:
conv.Modalities[ModalityTypes.AudioVideo].BeginConnect(ModalityCallback, asyncState);
否则它运行得很好,而且通话可以通过,我可以听到并与另一侧交谈,但是我的用户界面冻结了,由于此错误,我无法控制任何东西。即使对方挂断电话,我也必须在任务经理中杀死该过程。
这是我的InitiateAvstream方法,基于MSDN加入Lync对话示例:
public bool InitiateAVStream()
{
Console.WriteLine("InitiateAVStream");
if (conv.State == ConversationState.Terminated)
{
return false;
}
if (conv.Modalities[ModalityTypes.AudioVideo].CanInvoke(ModalityAction.Connect))
{
conv.Modalities[ModalityTypes.AudioVideo].ModalityStateChanged += _AVModality_ModalityStateChanged;
conv.Modalities[ModalityTypes.AudioVideo].ActionAvailabilityChanged += _AVModality_ActionAvailabilityChanged;
//Accept the notification. If Lync UI is enabled, incoming call notification is closed.
conv.Modalities[ModalityTypes.AudioVideo].Accept();
//Connect the AV modality and begin to send and received AV stream.
object[] asyncState = { conv.Modalities[ModalityTypes.AudioVideo], "CONNECT" };
try
{
conv.Modalities[ModalityTypes.AudioVideo].BeginConnect(ModalityCallback, asyncState);
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
return true;
}
return false;
}
输出消息:
A first chance exception of type 'System.UnauthorizedAccessException' occurred in Microsoft.Lync.Model.dll
at Microsoft.Office.Uc.ModalityClass.Connect(ModalityConnectOptions _options, Object _modalityCallback, Object _state)
at Microsoft.Lync.Model.Conversation.Modality.BeginConnect_private(ModalityConnectOptions options, AsyncCallback modalityCallback, Object state)
at Microsoft.Lync.Model.Conversation.Modality.BeginConnect(AsyncCallback modalityCallback, Object state)
at UIPrototype.MeetingForm.InitiateAVStream() in c:UsersmorrissiDocumentsVisual Studio 2012ProjectsUIPrototypeUIPrototypeMeetingForm.cs:line 758
任何输入都将不胜感激。这对我来说很奇怪,只有当我尝试接受传入的音频电话时才发生。其他一切都很好。我尚未开始在视频通话上进行工作,但是一旦音频工作就可以。
谢谢
编辑:
用BeginReTrieve替换开头连接仍然会引发相同的错误并产生相同的结果。仍然不确定该怎么做。
您从哪里运行应用程序?我有一个非常相似的堆栈Trace,并将应用程序移至" C: Users Myuser"中为我解决了问题。
我能够解决问题。显然,当您仅连接音频呼叫时,唯一需要的行是
conv.Modalities[ModalityTypes.AudioVideo].Accept();
您无需致电beginConnect即可连接音频。删除开头连接可以防止丢弃错误,并且音频连接仍然很好。BeginConnect用于连接视频。
我的问题与未完全加载的表单不相关,并且似乎是无关的。这是因为我试图在consingmanager_conversationed中创建新形式。如果我尝试在单击按钮上创建新表单,则加载正常并有效,但似乎是阻止其正常工作的事件。
我对此不够好,无法识别何时由lync或c#引起的错误。