Vb.net 复制文件时停止程序冻结

Vb.net 复制文件时停止程序冻结,vb.net,Vb.net,我制作了一个游戏安装程序,它将一些文件从安装程序复制到游戏目录。但是,当我单击运行下面子项的按钮时,程序将冻结,直到操作完成 Private Sub InstallGameFilesClicked(sender as object, e as eventargs) Handles InstallGmF.click My.computer.filesystem.copydirectory(environment.currentdirectory & "\res\gameFiles"

我制作了一个游戏安装程序,它将一些文件从安装程序复制到游戏目录。但是,当我单击运行下面子项的按钮时,程序将冻结,直到操作完成

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

您应该学习如何使用后台工作对象。它将在与程序主要部分使用的进程不同的进程中运行复制,因此不会导致其冻结。后台工作对象可以在工具箱中的“组件”下找到

背景工作1


一句警告的话,你必须知道如何使用它来让它正常工作。完成后,它将向程序的主要部分返回一个事件,您应该使用该事件向用户发出复制过程已完成的信号,等等。只需搜索有关此过程的示例。

在后台执行任务的简单方法是使用
BackgroundWorker
。看见
BackgroundWorker
还允许您向UI提供反馈,例如显示进度条