亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ftpasynchronousconnection.cs

?? 這是用C#編寫的免費(fèi)的 .NET FTP客戶端庫。
?? CS
字號:
using System;
using System.Collections;
using System.Threading;
using System.IO;

namespace FTPClient
{
	/// <summary>
	/// Summary description for FTPAsynchronousConnection.
	/// </summary>
	public class FTPAsynchronousConnection : FTPConnection
	{
		private struct FileTransferStruct
		{
			public string RemoteFileName;
			public string LocalFileName;
			public FTPFileTransferType Type;
		}

		private ArrayList threadPool;
		private Queue sendFileTransfersQueue;
		private Queue getFileTransfersQueue;
		private Queue deleteFileQueue;
		private Queue setCurrentDirectoryQueue;
		private Queue makeDirQueue;
		private Queue removeDirQueue;
		private System.Timers.Timer timer;
				
		public FTPAsynchronousConnection() : base()
		{
			this.threadPool = new ArrayList();
			this.sendFileTransfersQueue = new Queue();
			this.getFileTransfersQueue = new Queue();
			this.deleteFileQueue = new Queue();
			this.setCurrentDirectoryQueue = new Queue();
			this.makeDirQueue = new Queue();
			this.removeDirQueue = new Queue();
			this.timer = new System.Timers.Timer(100);
			this.timer.Elapsed+=new System.Timers.ElapsedEventHandler(ManageThreads);
			this.timer.Start();
		}

		public override void Open(string remoteHost, string user, string password)
		{
			base.Open(remoteHost, user, password);
		}

		public override void Open(string remoteHost, string user, string password, FTPMode mode)
		{
			base.Open(remoteHost, user, password, mode);
		}

		public override void Open(string remoteHost, int remotePort, string user, string password)
		{
			base.Open(remoteHost, remotePort, user, password);
		}
		
		public override void Open(string remoteHost, int remotePort, string user, string password, FTPMode mode)
		{
			base.Open(remoteHost, remotePort, user, password, mode);
		}
		
		private Thread CreateGetFileThread(string remoteFileName, string localFileName, FTPFileTransferType type)
		{
			FileTransferStruct ft = new FileTransferStruct();
			ft.LocalFileName = localFileName;
			ft.RemoteFileName = remoteFileName;
			ft.Type = type;
			this.getFileTransfersQueue.Enqueue(ft);

			Thread thread = new Thread(new ThreadStart(GetFileFromQueue));
			thread.Name = "GetFileFromQueue " + remoteFileName + ", " + localFileName + ", " + type.ToString();;
			return thread;
		}

		public override void GetFile(string remoteFileName, FTPFileTransferType type)
		{
			GetFile(remoteFileName, Path.GetFileName(remoteFileName), type);
		}

		public override void GetFile(string remoteFileName, string localFileName, FTPFileTransferType type)
		{
			EnqueueThread(CreateGetFileThread(remoteFileName, localFileName, type));
		}

		private void GetFileFromQueue()
		{
			FileTransferStruct ft = (FileTransferStruct)this.getFileTransfersQueue.Dequeue();
			base.GetFile(ft.RemoteFileName, ft.LocalFileName, ft.Type);
		}

		private Thread CreateSendFileThread(string localFileName, string remoteFileName, FTPFileTransferType type)
		{
			FileTransferStruct ft = new FileTransferStruct();
			ft.LocalFileName = localFileName;
			ft.RemoteFileName = remoteFileName;
			ft.Type = type;
			this.sendFileTransfersQueue.Enqueue(ft);

			Thread thread = new Thread(new ThreadStart(SendFileFromQueue));
			thread.Name = "GetFileFromQueue " + localFileName + ", " + remoteFileName + ", " + type.ToString();;
			return thread;
		}

		public override void SendFile(string localFileName, FTPFileTransferType type)
		{
			SendFile(localFileName, Path.GetFileName(localFileName), type);
		}
		
		public override void SendFile(string localFileName, string remoteFileName, FTPFileTransferType type)
		{
			EnqueueThread(CreateSendFileThread(localFileName, remoteFileName, type));
		}

		private void SendFileFromQueue()
		{
			FileTransferStruct ft = (FileTransferStruct)this.sendFileTransfersQueue.Dequeue();
			base.SendFile(ft.LocalFileName, ft.RemoteFileName, ft.Type);
		}

		public override void DeleteFile(String remoteFileName)
		{
			EnqueueThread(CreateDeleteFileThread(remoteFileName));
		}

		private Thread CreateDeleteFileThread(String remoteFileName)
		{
			this.deleteFileQueue.Enqueue(remoteFileName);

			Thread thread = new Thread(new ThreadStart(DeleteFileFromQueue));
			thread.Name = "DeleteFileFromQueue " + remoteFileName;
			return thread;
		}
		
		private void DeleteFileFromQueue()
		{
			base.DeleteFile((string)this.deleteFileQueue.Dequeue());
		}

		public override void SetCurrentDirectory(String remotePath)
		{
			EnqueueThread(CreateSetCurrentDirectoryThread(remotePath));
		}

		private Thread CreateSetCurrentDirectoryThread(String remotePath)
		{
			this.setCurrentDirectoryQueue.Enqueue(remotePath);

			Thread thread = new Thread(new ThreadStart(SetCurrentDirectoryFromQueue));
			thread.Name = "SetCurrentDirectoryFromQueue " + remotePath;
			return thread;
		}

		private void SetCurrentDirectoryFromQueue()
		{
			base.SetCurrentDirectory((string)this.setCurrentDirectoryQueue.Dequeue());
		}

		public override void MakeDir(string directoryName)
		{
			EnqueueThread(CreateMakeDirFromQueueThread(directoryName));
		}

		private Thread CreateMakeDirFromQueueThread(string directoryName)
		{
			this.makeDirQueue.Enqueue(directoryName);

			Thread thread = new Thread(new ThreadStart(MakeDirFromQueue));
			thread.Name = "MakeDirFromQueue " + directoryName;
			return thread;
		}

		private void MakeDirFromQueue()
		{
			base.MakeDir((String) this.makeDirQueue.Dequeue());
		}
			
		public override void RemoveDir(string directoryName)
		{
			EnqueueThread(CreateRemoveDirFromQueue(directoryName));
		}

		private Thread CreateRemoveDirFromQueue(string directoryName)
		{
			this.removeDirQueue.Enqueue(directoryName);

			Thread thread = new Thread(new ThreadStart(RemoveDirFromQueue));
			thread.Name = "RemoveDirFromQueue " + directoryName;
			return thread;
		}

		private void RemoveDirFromQueue()
		{
			base.RemoveDir((String) this.removeDirQueue.Dequeue());
		}

		public override void Close()
		{
			WaitAllThreads();
			base.Close();
		}

		private void ManageThreads(Object state, System.Timers.ElapsedEventArgs e)
		{
			Thread thread;
			try
			{
				LockThreadPool();
				thread = PeekThread();
				if(thread != null)
				{
					switch (thread.ThreadState)
					{
						case ThreadState.Unstarted:
							LockThreadPool();
							thread.Start();
							UnlockThreadPool();
							break;
						case ThreadState.Stopped:
							LockThreadPool();
							DequeueThread();
							UnlockThreadPool();
							break;
					}
				}
				UnlockThreadPool();
			}
			catch
			{
				UnlockThreadPool();
			}
		}
		
		private void WaitAllThreads()
		{
			while(this.threadPool.Count!=0)
			{
				Thread.Sleep(100);
			}
		}

		private void EnqueueThread(Thread thread)
		{
			LockThreadPool();
			this.threadPool.Add(thread);
			UnlockThreadPool();
		}
		private Thread DequeueThread()
		{
			Thread thread;
			LockThreadPool();
			thread = (Thread)this.threadPool[0];
			this.threadPool.RemoveAt(0);
			UnlockThreadPool();
			return thread;
		}

		private Thread PeekThread()
		{
			Thread thread = null;
			LockThreadPool();
			if(this.threadPool.Count > 0)
			{
				thread = (Thread)this.threadPool[0];
			}
			UnlockThreadPool();
			return thread;
		}

		private void LockThreadPool()
		{
			Monitor.Enter(this.threadPool);
		}

		private void UnlockThreadPool()
		{
			Monitor.Exit(this.threadPool);
		}
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美a级理论片| 蜜桃av一区二区三区电影| 欧美日韩色综合| 激情成人综合网| 亚洲黄色片在线观看| 2021国产精品久久精品| 欧美日产国产精品| 99视频精品在线| 韩国v欧美v亚洲v日本v| 亚洲国产成人av网| 国产精品天美传媒| 精品成人一区二区| 制服视频三区第一页精品| 色综合一区二区| 国产精品羞羞答答xxdd| 麻豆91精品视频| 午夜亚洲福利老司机| 国产精品久久久久9999吃药| 久久影院电视剧免费观看| 91精品免费在线| 欧美日韩国产中文| 91黄视频在线| 色综合网色综合| 99riav久久精品riav| 国产成人精品亚洲日本在线桃色| 另类人妖一区二区av| 天天免费综合色| 亚洲精品成人少妇| 亚洲视频在线观看三级| 国产精品乱码人人做人人爱| 国产色产综合色产在线视频| 久久久久久久久久久久久夜| 日韩精品一区二区三区视频| 日韩视频一区二区在线观看| 欧美一级淫片007| 欧美人与禽zozo性伦| 欧美三级视频在线| 欧美专区在线观看一区| 在线观看中文字幕不卡| 色一区在线观看| 色一情一伦一子一伦一区| 色屁屁一区二区| 欧美午夜精品一区二区蜜桃 | 性做久久久久久久免费看| 一区二区三区在线免费观看 | 亚洲成va人在线观看| 亚洲一区二区三区四区的| 亚洲一区二区在线播放相泽| 一区二区三区蜜桃| 亚洲一二三专区| 日韩精品一二三四| 免费美女久久99| 国产在线一区观看| 成人亚洲一区二区一| 色综合天天综合狠狠| 色94色欧美sute亚洲13| 欧美日韩久久久| 日韩久久久久久| 欧美高清一级片在线观看| 日韩理论电影院| 亚洲一级在线观看| 精品一区二区免费视频| 国产99一区视频免费| 色综合久久综合网欧美综合网| 欧美色大人视频| 欧美tk—视频vk| 国产农村妇女毛片精品久久麻豆| 自拍视频在线观看一区二区| 亚洲一区二三区| 九九国产精品视频| a级高清视频欧美日韩| 91高清视频免费看| 欧美tickling网站挠脚心| 国产色产综合色产在线视频| 伊人开心综合网| 蜜臀久久99精品久久久画质超高清 | 欧美蜜桃一区二区三区| 欧美大片国产精品| 亚洲日本在线观看| 免费成人av在线| 99久久免费国产| 日韩三级视频中文字幕| 亚洲欧洲av一区二区三区久久| 午夜私人影院久久久久| 从欧美一区二区三区| 欧美三区免费完整视频在线观看| 久久亚洲一级片| 亚洲一区二区五区| 国模少妇一区二区三区| 色综合色狠狠天天综合色| 精品国产区一区| 亚洲精品视频自拍| 精品一区二区三区在线观看国产| 97精品超碰一区二区三区| 日韩欧美精品在线| 一个色综合av| 国产激情偷乱视频一区二区三区| 精品视频1区2区3区| 国产精品你懂的| 麻豆91在线看| 在线播放中文一区| 亚洲四区在线观看| 国产精品一区二区三区乱码| 欧美剧在线免费观看网站 | 亚洲精品乱码久久久久久日本蜜臀| 久久精品99国产精品日本| 在线观看国产一区二区| 国产精品天干天干在观线| 国内成人自拍视频| 欧美日韩aaaaa| 亚洲资源中文字幕| 成人va在线观看| 久久九九国产精品| 精品中文字幕一区二区| 欧美日韩国产高清一区二区三区| 亚洲日本成人在线观看| 成人丝袜18视频在线观看| 久久亚洲一级片| 韩国女主播一区二区三区| 日韩视频在线永久播放| 日韩精品免费专区| 精品视频免费看| 亚洲第一激情av| 91久久人澡人人添人人爽欧美| 欧美国产乱子伦 | 毛片不卡一区二区| 欧美精三区欧美精三区| 亚洲综合视频在线观看| 色诱视频网站一区| 国产精品久久看| 成人免费看视频| 欧美激情一区二区三区蜜桃视频| 国产精品影音先锋| 久久精品视频网| 成人亚洲一区二区一| 国产精品久久久久久户外露出 | 欧美视频在线一区二区三区 | 美女视频黄 久久| 欧美成人bangbros| 国内精品在线播放| 国产欧美精品日韩区二区麻豆天美| 精品一区二区三区在线观看国产| 日韩精品一区二区三区中文不卡| 精品亚洲aⅴ乱码一区二区三区| 日韩一级黄色大片| 国产在线麻豆精品观看| 久久九九国产精品| 91在线看国产| 亚洲在线中文字幕| 欧美一区二区三区免费大片| 久久99久久99| 中文字幕成人在线观看| 99久久精品免费看| 亚洲自拍另类综合| 日韩欧美区一区二| 国产成人综合亚洲91猫咪| 中文字幕五月欧美| 91九色最新地址| 麻豆freexxxx性91精品| 久久久综合视频| 一本色道久久综合精品竹菊| 午夜精品国产更新| www久久久久| 91丨九色丨蝌蚪富婆spa| 亚洲综合在线电影| 日韩视频123| 成人永久看片免费视频天堂| 亚洲精品成人悠悠色影视| 欧美一区二区三区男人的天堂| 国产精品99久久久久久似苏梦涵| 最好看的中文字幕久久| 欧美精品日韩综合在线| 国产在线一区二区| 一区二区三区在线看| 精品免费视频一区二区| 不卡视频一二三四| 亚洲va欧美va天堂v国产综合| 精品免费视频一区二区| 一本色道综合亚洲| 免费在线观看不卡| 亚洲欧洲制服丝袜| 精品成人一区二区| 欧美日韩色一区| av一二三不卡影片| 麻豆成人91精品二区三区| 亚洲精品综合在线| 欧美一级二级三级蜜桃| 色综合一区二区三区| 国产一区二区在线观看免费| 一区二区三区免费网站| 久久夜色精品国产欧美乱极品| 日本福利一区二区| 成人一区二区视频| 蜜桃91丨九色丨蝌蚪91桃色| 玉米视频成人免费看| 国产欧美日韩激情| 欧美一级在线观看| 欧美性感一类影片在线播放| 国产成人av电影在线播放| 日本欧美在线观看|