C# 中的 BackgroundWorker 和服务器
本文关键字:服务器 BackgroundWorker 中的 | 更新日期: 2023-09-27 17:57:07
当单击按钮时,我正在尝试在 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
正常工作吗?
使用
bg.DoWork += (sender1, e) => copyDllsToServer(sender1, e);
^_____________
而不是
bg.DoWork += (sender, e) => copyDllsToServer();
或使用方法组作为
bg.DoWork += copyDllsToServer;
为什么不使用Socket
类的异步方法?
Socket
类实现了异步编程模型 (APM) 模式。检查以 Begin/End
开头的套接字方法。