zoukankan      html  css  js  c++  java
  • 自定义任务

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using ScheduleWork;
    using NshowAdClient.Services;
    using NshowAdClient.Helper;
    using NewTempo.Ftp;
    using NshowAdClient.AdExceptions;
    using System.Net;
    
    namespace NshowAdClient.AdScheduleWork
    {
        public abstract class FtpScheduleWork : ScheduleWorkBase
        {
            /// <summary>
            /// Ftp上的文件路径
            /// </summary>
            public string FtpFile { get; private set; }
    
            /// <summary>
            /// 操作FTP的实例对象
            /// </summary>
            public MyFtp MyFtp { get; private set; }
    
    
            public FtpScheduleWork(string ftpFile, MyFtp myftp)
            {
                this.FtpFile = ftpFile;
                this.MyFtp = myftp;
            }
    
            protected override object RunWorking()
            {
                FtpMethodHandle();
                return null;
            }
    
            public override void Rollback()
            {
                base.Rollback();
    
                // 完成没有失败的情况下回滚
                if (IsCompleted && !IsFailed)
                {
                    try
                    {
                        FtpMethodRoolback();
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.Debug(ex.Message);
                    }
                }
            }
    
            protected abstract void FtpMethodHandle();
    
            protected virtual void FtpMethodRoolback() { }
        }
    
        public class FtpUploadScheduleWork : FtpScheduleWork
        {
            /// <summary>
            /// 本地文件路径
            /// </summary>
            public string LocalFile { get; private set; }
    
            public int Percent { get; set; }
    
    
            /// <param name="ftp">Ftp上的文件路径</param>
            /// <param name="local">本地文件路径</param>
            public FtpUploadScheduleWork(string ftpFile, string local, MyFtp myFtp)
                : base(ftpFile, myFtp)
            {
                this.LocalFile = local;
            }
    
            protected override void FtpMethodHandle()
            {
                FtpHelpService.CreateDir(FtpFile, MyFtp);
                //修改上传方式
    
                bool ulRet = MyFtp.Upload(FtpFile, LocalFile);
                if (ulRet == false)
                {
                    throw new FtpUploadException(FtpFile, LocalFile);
                }
            }
    
            protected override void FtpMethodRoolback()
            {
                this.MyFtp.Delete(this.FtpFile);
            }
        }
    
    
        public class FtpDeleteScheduleWork : FtpScheduleWork
        {
            public FtpDeleteScheduleWork(string ftpFile, MyFtp myFtp)
                : base(ftpFile, myFtp)
            {
            }
    
            protected override void FtpMethodHandle()
            {
                MyFtp.Delete(FtpFile);
            }
        }
    
    
        public class FtpDownloadScheduleWork : FtpScheduleWork
        {
            /// <summary>
            /// 本地文件路径
            /// </summary>
            public string LocalFile { get; private set; }
    
            public FtpDownloadScheduleWork(string ftpFile, string localFile, MyFtp myFtp)
                : base(ftpFile, myFtp)
            {
                this.LocalFile = localFile;
            }
    
            protected override void FtpMethodHandle()
            {
                bool dlRet = MyFtp.Download(this.FtpFile, this.LocalFile);
                if (dlRet == false)
                    throw new FtpDownloadException(this.FtpFile, this.LocalFile);
            }
        }
    }
    
  • 相关阅读:
    java 多线程 Callable -- 分段处理一个大的list 然后再合并结果
    java实现 比较两个文本相似度-- java 中文版 simHash 实现 ,
    spring 多线程 写入数据库 和 写入 xml文件
    爬虫入门 手写一个Java爬虫
    java web 入门级 开发 常用页面调试方法
    Java 递归调用 recursive 给一个参数 返回一大堆
    javaWeb 基础知识
    用 eclipse 创建一个简单的 meaven spring springMvc mybatis 项目
    【题解】【LibreOJ Beta Round #5】游戏 LOJ 531 基环树 博弈论
    【题解】Popping Balls AtCoder Code Festival 2017 qual B E 组合计数
  • 原文地址:https://www.cnblogs.com/wywnet/p/4755234.html
Copyright © 2011-2022 走看看