C# c语言中的BackgroundWorker和服务器#
我试图在c#中的服务器和客户端之间复制文件时,单击一个按钮。 我希望使用后台工作程序,因为我不希望副本在复制时卡住我的表单。 我有以下代码: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
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的建议。。。