- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
StreamSocket.ConnectAsync、ReadAsync 和 WriteAsync 具有接受 CancellationTokenSource 但不接受 UpgradeToSslAsync 的重载。我怎样才能克服这个?或者,它是有意制作的,超时概念对 SSL 握手没有意义(至少在 UWP 应用程序中),我应该只依赖默认行为吗?
最佳答案
StreamSocket.ConnectAsync, ReadAsync and WriteAsync have overloads accepting CancellationTokenSource
实际上,所有 ConnectAsync
StreamSocket
的重载方法不接受 CancellationToken
范围。此外,我没有找到 StreamSocket
的 ReadAsync
和 WriteAsync
方法。通常我们使用DataReader或 StreamReader用于读取 StreamSocket
的输入流。
我们可以为您提到的连接创建一个CancellationToken
,用于超时监控和取消连接。但是我们通过 WindowsRuntimeSystemExtensions.AsTask
来设置它方法将异步操作表示为任务,然后给出一个 CancellationToken
。示例代码如下:
socket = new StreamSocket();
HostName hostName = new HostName(host);
CancellationTokenSource _cts = new CancellationTokenSource();
_cts.CancelAfter(5000);
// Connect to the server
await socket.ConnectAsync(hostName, port).AsTask(_cts.Token);
return true;
因此 UpgradeToSslAsync
方法你也可以把它作为任务并给出一个 CancellationToken
如下:
await socket.UpgradeToSslAsync(SocketProtectionLevel.PlainSocket, hostName).AsTask(cancellationToken);
关于c# - 如何在 UWP 应用程序中为 StreamSocket.UpgradeToSslAsync 设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41139374/
我是一名优秀的程序员,十分优秀!