using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Linq; using System.Text; namespace GestoreTrimestrale.Logic { public class FtpManagerProcess : IDisposable { private BackgroundWorker ftpWorker { get; set; } //our thread to process zipping public ManagerProcessStatusEnum Status { get; set; } //process status //will be used for the main controller to handling "process completed" event (enabling textboxes) public BackgroundWorker FtpWorker { get { return ftpWorker; } set { ftpWorker = value; } } public string Ambiente { get; private set; } //no idea what's that for :( public string TngServer { get; private set; } //no idea what's that for :( public string TngJobset { get; private set; } //no idea what's that for :( public string TngJob { get; private set; } //no idea what's that for :( //create with default parameters public FtpManagerProcess() { CreateBackgroundWorker(); Ambiente = "SVILUPPO"; TngServer = ""; TngJobset = ""; TngJob = ""; } //create with provided parameters public FtpManagerProcess(string ambiente, string tngServer, string tngJobset, string tngJob) { CreateBackgroundWorker(); this.Ambiente = ambiente; this.TngServer = tngServer; this.TngJobset = tngJobset; this.TngJob = tngJob; } //starting process public void Start() { this.Status = ManagerProcessStatusEnum.Processing; ftpWorker.RunWorkerAsync(); } //killing the Backgroud worker (if exists) public void Dispose() { if (ftpWorker != null) { ftpWorker.CancelAsync(); } } //initialize FtpWorker private void CreateBackgroundWorker() { Status = ManagerProcessStatusEnum.Inactive; this.ftpWorker = new BackgroundWorker(); this.ftpWorker.DoWork += ftpWorker_DoWork; this.ftpWorker.RunWorkerCompleted += ftpWorker_RunWorkerCompleted; } //work completed private void ftpWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { this.Status = ManagerProcessStatusEnum.Completed; } //do your work private void ftpWorker_DoWork(object sender, DoWorkEventArgs e) { SmartFTPThread.Logic.FtpProcessSeparated.StartProcessing(Ambiente, TngServer, TngJobset, TngJob); } } }