从WPF C#帮助按钮启动的Skype在呼叫终止时挂起桌面计算机
我有一个独立的桌面WPF C#应用程序,带有一个帮助按钮,可以启动Skype电话呼叫我的帮助台。如果服务台终止呼叫,一切正常。但是,如果客户(应用程序用户)终止呼叫,应用程序将挂起。我通过搜索许多web源代码拼凑了以下代码从WPF C#帮助按钮启动的Skype在呼叫终止时挂起桌面计算机,c#,wpf,winforms,desktop-application,skype4com,C#,Wpf,Winforms,Desktop Application,Skype4com,我有一个独立的桌面WPF C#应用程序,带有一个帮助按钮,可以启动Skype电话呼叫我的帮助台。如果服务台终止呼叫,一切正常。但是,如果客户(应用程序用户)终止呼叫,应用程序将挂起。我通过搜索许多web源代码拼凑了以下代码 private void btnSkype_Click(object sender, EventArgs e) { Skype oSkype = new Skype(); if (!oSkype.Client.IsRunning) {
private void btnSkype_Click(object sender, EventArgs e)
{
Skype oSkype = new Skype();
if (!oSkype.Client.IsRunning) {
oSkype.Client.Start(false, false); //minimized, no splash
}
try {
oSkype.Attach(5, true); //wait for client to be connected and ready
}
catch (Exception ex) {
MessageBox.Show("Exception: " + ex.Message);
}
Call oCall = oSkype.PlaceCall("SRGWJG");
do
{
System.Threading.Thread.Sleep(1);
} while (oCall.Status != TCallStatus.clsInProgress);
oSkype.Client.Focus();
oCall.StartVideoSend();
do
{
System.Threading.Thread.Sleep(1);
} while (oCall.Status == TCallStatus.clsInProgress);
oSkype.Client.Minimize();
}
对不起,我不知道如何格式化代码。我会再试一次。你不应该只是复制粘贴代码,你应该了解它的作用。在循环中调用
Thread.Sleep
将冻结应用程序,可能会阻止它更新oCall
状态。您应该听oCall
对象的事件。