I’m trying to copy files between server and client in c# when a button is clicked.
I wish to use a background worker because I don’t want the copy to make my form stuck while copying.
I have this code:
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();
}
}
The copying function is: copyDllsToServer().
When doing that, I get the following error: 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.
How can I resolve it?
Will this BackgroundWorker work properly when multiple clients run it?
Use
instead of
or use method group as
Why not used asynchronous methods of
Socketclass?The
Socketclass realizes Asynchronous Programming Model (APM) pattern. Examine Socket Methods which starts withBegin/End.