[英]BackgroundWorker and server in c#
單擊按鈕時,我正在嘗試使用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
開頭的Socket方法 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.