ボタンがクリックされたときにc#でサーバーとクライアント間でファイルをコピーしようとしています。コピー中にフォームが動かなくなってほしくないので、バックグラウンドワーカーを使用したいと思います。私はこのコードを持っています:
private void connectBtn_Click(object sender, EventArgs e)
{
if (!isConnected)
{
clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
connectBtn.Text = "Disconnect From Server";
connectBtn.Refresh();
clientSock.Connect(remoteIpAddress, remotePort);
statusColor.BackColor = Color.Green;
statusColor.Refresh();
isConnected = true;
buttonAddDirectory.Enabled = true;
buttonAddFile.Enabled = true;
var bg = new BackgroundWorker();
bg.DoWork += (sender, e) => copyDllsToServer();
bg.RunWorkerAsync();
if (backgroundWorker.IsBusy != true)
backgroundWorker.RunWorkerAsync();
}
}
コピー関数は、copyDllsToServer()です。
これを行うと、次のエラーが発生しますA local variable named 'sender' cannot be declared in this scope because it would give a different meaning to 'sender', which is already used in a 'parent or current' scope to denote something else
。どうすれば解決できますか?
複数のクライアントが実行する場合、これBackgroundWorker
は正しく機能しますか?