我制作了一个游戏安装程序,可以将安装程序中的一些文件复制到游戏目录中。但是,当我单击运行下面子项的按钮时,程序会冻结,直到操作完成。
Private Sub InstallGameFilesClicked(sender as object, e as eventargs) Handles InstallGmF.click
My.computer.filesystem.copydirectory(environment.currentdirectory & "\res\gameFiles", installDir & "\res\")
End Sub
(installDir变量是用户先前在程序中设置的字符串,用于确定游戏的安装位置)
我想要的是程序在单击按钮时不冻结...
有没有办法做到这一点?
谢谢,Rodit
答案 0 :(得分:1)
您应该学习如何使用后台工作器对象。它将以与程序主要部分使用的进程不同的进程运行复制,因此不会导致其冻结。后台工作程序对象可以在组件下的工具箱中找到。
BackgroundWorker1
警告,您必须知道如何使用它才能使其正常工作。完成后,它会将一个事件返回到程序的主要部分,您应该使用它来通知用户复制过程已完成等等。只需搜索有关其工作原理的示例。
答案 1 :(得分:1)
在后台执行任务的简便方法是使用BackgroundWorker
。见How to: Use a Background Worker。 BackgroundWorker
还允许您向UI提供反馈,以便显示进度条。