簡體   English   中英

C#中的BackgroundWorker和服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM