void CurrentTransferQueue_QueueStarted(object sender, TransferQueue.QueueEventArgs e) { RemoteFolderPathWhenQueueStart = CurrentFolderPath; ShowStatusToolStripItems(); this.BeginInvoke(new aaaSoft.Helpers.ThreadHelper.UnnamedDelegate(delegate { btnStartQueue.Enabled = false; btnStopQueue.Enabled = true; })); }
void CurrentTransferQueue_QueueStoped(object sender, TransferQueue.QueueEventArgs e) { var tq = sender as TransferQueue; HidenStatusToolStripItems(); this.BeginInvoke(new aaaSoft.Helpers.ThreadHelper.UnnamedDelegate(delegate { btnStartQueue.Enabled = lvQueue.Items.Count != 0; btnStopQueue.Enabled = false; })); LogHelper.PushLog("用户中止", Color.Red); }
void CurrentTransferQueue_QueueCompleted(object sender, TransferQueue.QueueEventArgs e) { var tq = sender as TransferQueue; HidenStatusToolStripItems(); this.BeginInvoke(new aaaSoft.Helpers.ThreadHelper.UnnamedDelegate(delegate { btnStartQueue.Enabled = lvQueue.Items.Count != 0; btnStopQueue.Enabled = false; })); BeginListFolder(RemoteFolderPathWhenQueueStart); LogHelper.PushLog("队列已完成", Color.FromArgb(128, 0, 0)); String LogStr = String.Format( "已处理 {0} 个文件, {1} 个目录, 总计 {2} 于 {3} 秒 ({4}/秒)" , tq.TransferedFileCount , tq.TransferedFolderCount , storageUnitStringConverting.GetString(tq.TransferedDataLength, 2, false) + "B" , tq.TransferUsedTime.TotalSeconds.ToString("N2") , storageUnitStringConverting.GetString(tq.AverageTransferSpeed, 2, false) + "B" ); LogHelper.PushLog(LogStr, Color.FromArgb(128, 0, 0)); }
void CurrentTransferQueue_QueueAdded(object sender, TransferQueue.QueueEventArgs e) { var tq = sender as TransferQueue; this.Invoke(new aaaSoft.Helpers.ThreadHelper.UnnamedDelegate(delegate { btnStartQueue.Enabled = tq.GetQueueItemCount() != 0 && tq.QueueState != TransferQueue.TransferQueueState.Running; Int32 itemIndex = lvQueue.Items.Count - CurrentTransferQueue.GetTransferQueueItemBackIndex(e.QueueItem); if (itemIndex > lvQueue.Items.Count || itemIndex < 0) { return; } var item = e.QueueItem; var newLvi = lvQueue.Items.Insert(itemIndex, ""); var ftpClient = item.FtpClient; var ftpSiteData = (FtpSiteData)ftpClient.Tag; if (item.Type == TransferQueueItem.TransferQueueItemTypeEnum.Download) { newLvi.Text = item.RemoteBaseFile.FullName; newLvi.SubItems.Add(item.LocalPath); if (item.RemoteBaseFile.IsFolder) { newLvi.SubItems.Add("<文件夹>"); } else { newLvi.SubItems.Add(storageUnitStringConverting.GetString(item.RemoteBaseFile.Length, 2, false) + "B"); } newLvi.SubItems.Add(String.Format("从 {0} 下载", ftpSiteData.DisplayName)); newLvi.Tag = item; newLvi.ImageKey = "Download"; } else if (item.Type == TransferQueueItem.TransferQueueItemTypeEnum.Upload) { newLvi.Text = item.LocalPath; newLvi.SubItems.Add(item.RemotePath); if (File.Exists(item.LocalPath)) { var fileInfo = new FileInfo(item.LocalPath); newLvi.SubItems.Add(storageUnitStringConverting.GetString(fileInfo.Length, 2, false) + "B"); } else if (Directory.Exists(item.LocalPath)) { var folderInfo = new DirectoryInfo(item.LocalPath); newLvi.SubItems.Add("<文件夹>"); } newLvi.SubItems.Add(String.Format("上传到 {0}", ftpSiteData.DisplayName)); newLvi.Tag = item; newLvi.ImageKey = "Upload"; } else if (item.Type == TransferQueueItem.TransferQueueItemTypeEnum.Delete) { newLvi.Text = item.RemoteBaseFile.Name; newLvi.SubItems.Add(item.RemotePath); if (item.RemoteBaseFile.IsFolder) { newLvi.SubItems.Add("<文件夹>"); } else { newLvi.SubItems.Add(storageUnitStringConverting.GetString(item.RemoteBaseFile.Length, 2, false) + "B"); } newLvi.SubItems.Add(String.Format("从 {0} 删除", ftpSiteData.DisplayName)); newLvi.Tag = item; newLvi.ImageKey = "Delete"; } })); }
void CurrentTransferQueue_QueueRemoved(object sender, TransferQueue.QueueEventArgs e) { var tq = sender as TransferQueue; this.BeginInvoke(new aaaSoft.Helpers.ThreadHelper.UnnamedDelegate(delegate { btnStartQueue.Enabled = tq.GetQueueItemCount() != 0 && tq.QueueState != TransferQueue.TransferQueueState.Running; ListViewItem lvi = null; foreach (ListViewItem newLvi in lvQueue.Items) { if (e.QueueItem.Equals(newLvi.Tag)) { lvi = newLvi; break; } } if (lvi == null) { return; } if (e.QueueItem.State == TransferQueueItem.TransferQueueItemStateEnum.Error) { lvi.ImageKey = "Error"; LogHelper.PushLog(e.QueueItem.Tip, Color.Red); return; } else if (e.QueueItem.State == TransferQueueItem.TransferQueueItemStateEnum.TransferComplete) { var item = e.QueueItem; var ftpClient = item.FtpClient; //显示传输成功日志 if (item.Type == TransferQueueItem.TransferQueueItemTypeEnum.Download) { if (item.RemoteBaseFile is FtpBaseFileInfo) { var baseFile = item.RemoteBaseFile; String logStr = String.Format("已传送: {0} {1} 于 {2} 秒 ({3}/秒)" , baseFile.Name , storageUnitStringConverting.GetString(baseFile.Length, 2, false) + "B" , ftpClient.TransferUsedTime.TotalSeconds.ToString("N2") , storageUnitStringConverting.GetString(ftpClient.AverageTransferSpeed, 1, false) + "B"); LogHelper.PushLog(logStr, Color.FromArgb(128, 0, 0)); } } else if (item.Type == TransferQueueItem.TransferQueueItemTypeEnum.Upload) { if (Directory.Exists(item.LocalPath)) { var remoteFileName = aaaSoft.Helpers.IoHelper.GetFileOrFolderName(item.RemotePath, '/'); String logStr = String.Format("已传送: {0} {1} 于 {2} 秒 ({3}/秒)" , remoteFileName , storageUnitStringConverting.GetString(ftpClient.TotalDataLength, 2, false) + "B" , ftpClient.TransferUsedTime.TotalSeconds.ToString("N2") , storageUnitStringConverting.GetString(ftpClient.AverageTransferSpeed, 1, false) + "B"); LogHelper.PushLog(logStr, Color.FromArgb(128, 0, 0)); } } } //将此对象从lvQueue中移除 lvQueue.Items.Remove(lvi); })); }