C# c语言中的BackgroundWorker和服务器#

C# c语言中的BackgroundWorker和服务器#,c#,client-server,backgroundworker,C#,Client Server,Backgroundworker,我试图在c#中的服务器和客户端之间复制文件时,单击一个按钮。 我希望使用后台工作程序,因为我不希望副本在复制时卡住我的表单。 我有以下代码: private void connectBtn_Click(object sender, EventArgs e) { if (!isConnected) { clientSock = new Socket(AddressFamily.InterNetwork, SocketTy

我试图在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()

执行此操作时,我遇到以下错误:
无法在此范围内声明名为“sender”的局部变量,因为它将赋予“sender”不同的含义,而“sender”已在“父级或当前”范围内用于表示其他内容
。 我如何解决它

当多个客户端运行它时,这个
BackgroundWorker
会正常工作吗?

使用

bg.DoWork += (sender1, e) => copyDllsToServer(sender1, e);
                    ^_____________
而不是

bg.DoWork += (sender, e) => copyDllsToServer();
或使用方法组作为

bg.DoWork += copyDllsToServer;
为什么不使用
Socket
类的异步方法

Socket
类实现。检查以
开始/结束开始的部分使用

bg.DoWork += (sender1, e) => copyDllsToServer(sender1, e);
                    ^_____________
而不是

bg.DoWork += (sender, e) => copyDllsToServer();
或使用方法组作为

bg.DoWork += copyDllsToServer;
为什么不使用
Socket
类的异步方法


Socket
类实现。检查以
Begin/End
开头的代码。谢谢关于你的问题,我不知道,我不知道怎么做,所以我问了,并得到了使用bg的建议…有效。谢谢关于你的问题,我不知道,我不知道怎么做,所以我问了,并得到了使用bg的建议。。。