using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Windows.Forms;
using System.Threading;
namespace SoulWorkerDownload
{
/// <summary>
/// FTP文件上传下载
/// </summary>
public class FileUpDownload
{
#region 变量属性
private Thread m_thread_Download = null;
/// <summary>
/// Ftp服务器ip
/// </summary>
private string FtpServerIP = string.Empty;
/// <summary>
/// Ftp 指定用户名
/// </summary>
private string FtpUserID = string.Empty;
/// <summary>
/// Ftp 指定用户密码
/// </summary>
private string FtpPassword = string.Empty;
/// <summary>
/// 远端文件名
/// </summary>
private string remoteFileName = string.Empty;
/// <summary>
/// 本地文件名
/// </summary>
private string localFileName = string.Empty;
public string LocalFileName
{
get { return localFileName; }
set { localFileName = value; }
}
private MainForm mainform;
/// <summary>
/// 更新进度条
/// </summary>
public Action< long> updateProgress;
#endregion
#region 从FTP服务器下载文件,指定本地路径和本地文件名
public FileUpDownload(string IP, string userID, string userPassword,string targetFileName,string saveFileName,MainForm form)
{
FtpServerIP = IP;
FtpUserID = userID;
FtpPassword = userPassword;
remoteFileName = targetFileName;
localFileName = saveFileName;
mainform = form;
}
public void StartSingleDownload()
{
m_thread_Download = new Thread(new ThreadStart(FtpDownloadFile));
m_thread_Download.SetApartmentState(ApartmentState.STA);
m_thread_Download.Priority = ThreadPriority.Highest;
m_thread_Download.Start();
}
/// <summary>
/// 停止下载
/// </summary>
public void AbortSingleDownload()
{
if (m_thread_Download != null && m_thread_Download.IsAlive )
{
if (m_thread_Download.ThreadState == ThreadState.Suspended)
m_thread_Download.Resume();
//if(Step.CURRENT_STEP != Step.State._ProcessState_Restart)
m_thread_Download.Abort();
}
}
/// <summary>
/// 暂停。挂起线程,或者如果线程已挂起,则不起作用
/// </summary>
/// <param name="_parameter"></param>
public void SuspendSingleDownload()
{
if (m_thread_Download != null && m_thread_Download.IsAlive == true)
{
m_thread_Download.Suspend();
}
}
public void ResumeSingleDownload()
{
bool isAlive = m_thread_Download.IsAlive;
ThreadState state = m_thread_Download.ThreadState;
if (m_thread_Download != null)
{
m_thread_Download.Resume();
}
}
/// <summary>
/// 判断线程是否结束
/// </summary>
public bool IsAbortThreadOrStop()
{
bool isAbort = fals
ftp断点下载(多线程)
最新推荐文章于 2025-05-21 09:18:44 发布