【发布时间】:2015-02-07 13:21:35
【问题描述】:
我正在为我的 Minecraft 服务器上的模组创建安装程序/更新程序。我已经将它设置为有两个文件,每行一个 mod,代码比较这两个文件,如果它们不匹配,则下载最新的 mod。目前我有这样的下载设置:
For x = 2 To latestModCount - 1
If currentModList(x) <> latestModList(x) Then
IO.File.Delete(applicationLocation & "multimc\instances\Dan's Server\minecraft\mods\" & currentModList(x))
My.Computer.Network.DownloadFile(OnlineFiles & "mods/" & latestModList(x), _
applicationLocation & "multimc\instances\Dan's Server\minecraft\mods\" & latestModList(x))
End If
'Updates currentModList to = latestModList
objWriter.Write(latestModList(x))
Next
使用这种方法,表格在文件下载时完全冻结。
我想要的是随着每个下载一个进度条移动,每次完成一个新的时重置为零。我知道使用this 方法我可以下载一个文件,并且进度条会很好地移动。但问题在于,因为它使用异步下载,所以上述代码下方的任何代码都会在下载完成之前执行,这在尝试解压缩不存在的 zip 文件时会成为问题。
如果有人有解决方案,请提供代码示例,因为我实际上是我的第一个任何语言的程序,除了教程之外。
【问题讨论】:
-
尝试使用Background worker 进行下载 - 它可以报告进度并且不会锁定 UI
-
异步对于初学者来说是一个相当高级的话题。我建议你花点时间阅读一下这个msdn.microsoft.com/en-us/library/jj152938%28v=vs.110%29.aspx
-
@Plutonix 感谢您的贡献,但是您能否发布一些关于如何将后台工作程序合并到现有代码中的代码。就像我说的我很新,所以谢谢你的耐心。
标签: vb.net asynchronous