クライアントをサーバーに接続すると、クライアントはいくつかの dll ファイルをサーバーにコピーし始めます。これが発生すると、コピーが完了するまでフォームが停止します (いくつかの大きなファイルがあります)。
このコピーをバックグラウンドで実行したいのは、ユーザーが引き続きフォームを操作できるようにするためです (参照ダイアログ ボックスを開くなど)。コピーが完了したことを確認します。
ここではスレッドが役立つと思いますが、私はスレッドが初めてであり、それがその方法であるかどうかもわかりません。
dll ファイルをコピーするためのコードは次のとおりです。
private bool copyDllsToServer()
{
//string targetPath = @"\\" + remoteIpAddress + "\\" + userName + batchRunPath;
string targetPath = "Z:\\nBatcher\\" + userName + batchRunPath;
if (!Directory.Exists(targetPath))
Directory.CreateDirectory(targetPath);
else
{
Directory.Delete(targetPath, true);
Directory.CreateDirectory(targetPath);
}
for (int i = 0; i < listOfFilesToCopy.Count; i++)
{
if (listOfPathToCopy[i].CompareTo(omekPath + shadersPath) == 0)
{
if (!Directory.Exists(targetPath + "Shaders"))
Directory.CreateDirectory(targetPath + "Shaders");
if (!File.Exists(targetPath + "Shaders\\" + listOfFilesToCopy[i]))
File.Copy(listOfPathToCopy[i] + listOfFilesToCopy[i], targetPath + "Shaders\\" + listOfFilesToCopy[i], true);
}
else
{
if (!File.Exists(targetPath + listOfFilesToCopy[i]))
File.Copy(listOfPathToCopy[i] + listOfFilesToCopy[i], targetPath + listOfFilesToCopy[i], true);
}
}
return true;
}
何か案は?