/// <summary> /// 로컬에서 서버로 보낼 파일 목록 추가 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnToServerBasket_Click(object sender, EventArgs e) { sessionOptions = new SessionOptions { Protocol = Protocol.Sftp, HostName = TxtAddress.Text, UserName = TxtID.Text, Password = TxtPassword.Text, PortNumber = Convert.ToInt32(TxtPort.Text), SshHostKeyFingerprint = "ssh-rsa 1024 YKV2Oy2ygc1MFwaCwYBohn9cPdrJvPg+2U1n0zJ4A6Q=", GiveUpSecurityAndAcceptAnySshHostKey = true }; panel1.Enabled = false; using (Session session = new Session()) { session.Open(sessionOptions); string TargetFullPath = TreeServerFileList.SelectedNode.Tag.ToString(); RemoteFileInfo fileInfo = await Task.Run(() => session.GetFileInfo(TargetFullPath)); // 비동기로 처리한 것에 큰 의미는 없다. if (!fileInfo.IsDirectory) { ServerSideFilePathBasket.Add(TreeServerFileList.SelectedNode.Tag.ToString()); } } panel1.Enabled = true; }
private void BgwDownload_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { panel1.Enabled = true; ServerSideFilePathBasket.Clear(); pForm2.Hide(); // BackgroundWorker 작업이 끝난 시점이라 Main Thread로 이미 작업이 옮겨왔기 때문에 Cross Thread가 발생하지 않는다. int selectedNodeLevel = TreeLocalFileList.SelectedNode.Level; int selectedNodeIndex = TreeLocalFileList.SelectedNode.Index; //TreeLocalFileList.Nodes.RemoveAt(selectedNodeIndex); DirectoryInfo SelectedNodeDirectoryInfo = new DirectoryInfo(SelectedLocalPath); //TreeLocalFileList.Nodes.Insert(selectedNodeIndex, LocalRecuresiveDirectory(SelectedNodeDirectoryInfo.FullName, SelectedNodeDirectoryInfo.Name)); }