我正在尝试改进我用Visual Basic.net编写的一个项目(LJTD)。首先,我想说明实际代码是什么:
Dim wc2 As New Net.WebClient
Dim nvc = Module_NVC.NVC_Create("SomeString123456789")
Dim downloadString = wc2.UploadValues(New Uri(linkToPHPFile), nvc)
这非常好。它将一些数据上传到服务器并返回一个String。问题是它不是异步并导致用户ping不好会导致应用程序本身出现巨大的峰值。所以它变得无法使用。这就是我尝试启用异步功能的原因:
Dim wc2 As New Net.WebClient
AddHandler wc2.DownloadFileCompleted, AddressOf Download_Completed
Dim nvc = Module_NVC.NVC_Create("SomeString123456789")
Dim downloadString = wc2.UploadValuesAsync(New Uri(linkToPHPFile), nvc)
问题出在最后一行。原因是 UploadValuesAsync 不允许获取像 UploadValues (Library)
这样的数据如果您想知道我的php文件是什么样的,请转到:
<?php
include 'inc/db-connect.php';
if (isset($_POST['teamID'])) {
$teamID = $db->real_escape_string($_POST['teamID']);
}
$sql="SELECT scaleX,scaleY FROM wardmap WHERE teamID = '$teamID';";
$result = $db->query($sql);
while ($row = $result->fetch_object())
echo "\r\n$row->scaleX $row->scaleY";
$db->close();
?>
如何上传NameValueCollection Async
并下载PHP使用echo
编写的数据。
如果你知道没有UploadValuesAsync
的另一种方式,也欢迎你。请给我一些提示。感谢。
答案 0 :(得分:0)
在vb-paradise获得帮助。
现在的解决方案:
Dim wc2 As New Net.WebClient AddHandler wc2.UploadValuesCompleted, AddressOf Download_Completed
Dim nvc = NVCGetWard_Create("SomeString123456789")
wc2.UploadValuesAsync(New Uri(linkToPHPFile), nvc)
然后你需要回调:
Private Sub Download_Completed(ByVal sender As Object, ByVal e As UploadValuesCompletedEventArgs)
Dim Result = Encoding.ASCII.GetString(e.Result)
End Sub
很简单