StreamSocket.ConnectAsync,ReadAsync和WriteAsync具有接受CancellationTokenSource但不接受UpgradeToSslAsync的重載。我該如何克服這一點?或者,它是否有意和超時的概念對SSL握手(至少在UWP應用程序中)沒有意義,我應該僅僅依靠默認行爲?如何在UWP應用中爲StreamSocket.UpgradeToSslAsync設置超時時間?
0
A
回答
1
StreamSocket.ConnectAsync,ReadAsync和WriteAsync有重載接受CancellationTokenSource
其實,所有的StreamSocket
的ConnectAsync
重載方法不接受CancellationToken
參數。另外,我沒有找到的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);
相關問題
- 1. 如何設置Socket.ConnectAsync的超時時間?
- 2. Libtorrent如何設置超時時間?
- 3. 如何設置OCILogon2的超時時間?
- 4. 爲NetworkObject.MapNetworkDrive設置超時時間
- 5. 如何爲SOAP調用設置超時
- 6. 如何在C#中設置超時時間
- 7. 如何在MvvmCross.Plugins.Network.Rest中設置超時時間?
- 8. 如何在android中設置超時時間
- 9. 如何在Node中設置http.request()的超時時間?
- 10. 如何在php中設置會話超時時間?
- 11. 如何在Python中設置SocketServer的超時時間?
- 12. 如何在Node.js中設置http.createClient的超時時間?
- 13. 如何在Spring MVC/tomcat中設置超時時間
- 14. 如何在Alamofire 3.0中設置客戶端超時時間ios
- 15. 如何在php中設置不同的超時時間限制?
- 16. 如何在ColdFusion無響應時在IIS 6中設置超時
- 17. 如何使用geo.js設置查找位置的超時時間?
- 18. 如何把超時時間設置爲NSTimer?
- 19. 如何設置超時時間爲AppFabric的
- 20. Android TimePickerDialog。應用程序在設置時間超過當前時間時崩潰
- 21. 如何在soapui中爲一個測試步驟設置超時時間?
- 22. 如何在Refit庫中設置超時
- 23. 如何在node.js中設置超時值?
- 24. 如何在socket_read中設置超時
- 25. 如何在recvmmsg()中設置超時?
- 26. 如何在javascript中設置ajax超時?
- 27. 如何在rails UJS中設置超時?
- 28. 如何使用TcpClient設置異步連接的超時時間?
- 29. uwp設置間隔可選小時數
- 30. 如何將超時設置爲JSONP?
我的壞,看起來像我混了StreamSocket方法和Stream方法。現在一切都很清楚,謝謝。 – Alex