在WPF中打开模式对话框以获取CefSharp的凭据

时间:2018-12-18 16:29:22

标签: wpf cefsharp

我有一个WPF应用程序,该应用程序托管了Skype for business的对话窗口;该窗口可以打开一个子控件,即Chromiun Web浏览器(CefSharp)。 浏览器将打开一个需要凭据的站点,因此将覆盖GetAuthCredentials方法以处理请求。 代码如下:

AuthBox dlg = new AuthBox(); 
dlg.Owner = _parent;
dlg.ShowDialog();
callback.Continue(dlg.Username, dlg.Password);

问题是:我需要将此对话框设置为模式对话框,以便锁定父窗口(对话);因此,dlg.Owner = _parent;被添加。但是,这将引发异常:  System.InvalidOperationException:'调用线程无法访问此对象,因为其他线程拥有它。'

要使用dispatcher.BeginInvoke不起作用。 还有其他方法可以打开登录窗口(模式)来避免此线程问题吗?

1 个答案:

答案 0 :(得分:0)

我认为dispatcher.BeginInvoke对您不起作用,因为它不会阻塞? 尝试使用同步原语,例如ManualResetEvent,在UI线程中打开对话框,在调用线程中等待ManualResetEvent通知,并确保完成后对话框引发事件。