嘿,我的Windows 10 UWP API存在问题。
我正在开发Windows 10 UWP应用,需要连接到Chromecast。我正在使用SharpCaster。但是,当我打开与Chromecast的连接并稍后再次关闭时,无法再次连接到Chromecast。 Chromecast的套接字再次打开,但在尝试写入时,我收到以下异常:
A method was called at an unexpected time. (Exception from HRESULT: 0x8000000E)
当我在断开连接时关闭Chromecast时,甚至会发生这种情况。我使用此方法断开了Chromecast的连接:
public void Disconnect()
{
_running = false;
_socket.InputStream.Dispose();
_socket.OutputStream.Dispose();
_socket.Dispose();
}
这个方法在图书馆找不到,我自己写了。将_running
设置为false会停止所有用于ping的循环等等...
使用以下代码创建套接字:
_socket = new StreamSocket().ConfigureForChromecast();
await _socket.ConnectAsync(new HostName(uri.Host), ChromecastPort, SocketProtectionLevel.Tls10);
扩展程序ConfigureForChromecast()
如下所示:
public static StreamSocket ConfigureForChromecast(this StreamSocket socket)
{
//Chromecast is not using trusted certificate so ignoring errors caused by that
socket.Control.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted);
socket.Control.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName);
socket.Control.OutboundBufferSizeInBytes = 2048;
socket.Control.KeepAlive = true;
socket.Control.QualityOfService = SocketQualityOfService.LowLatency;
return socket;
}
最后,使用
将消息写入套接字internal async Task Write(byte[] bytes)
{
try
{
var buffer = CryptographicBuffer.CreateFromByteArray(bytes);
await _socket.OutputStream.WriteAsync(buffer);
}
catch (Exception e)
{
Debugger.Break();
}
}
这就是异常发生的地方。第一次连接时,它可以正常工作,但是第二次连接时,我必须重新启动整个应用程序。有什么想法吗?