void FtpServer_SentData(object sender, FtpSentDataEventArgs e)
 {
     using (var db = new ICMDBContext())
     {
         lock (m_FtpTransferStatus)
         {
             var status = (from s in m_FtpTransferStatus
                           where s.Device.ip == e.Remote.Address.ToString()
                           select s).FirstOrDefault();
             if (status != null && status.Status == FtpTransferStatus.STATUS.LOAD_ING)
             {
                 status.FileSize  = e.FileSize;
                 status.SentBytes = e.SentBytes;
                 if (status.FileSize != 0)
                 {
                     int percentage = (int)(status.SentBytes * 100 / status.FileSize);
                     if (status.SentPercentage != percentage)
                     {
                         status.SentPercentage = percentage;
                         SetStatusColumnText(status.DeviceIndex, status.SentPercentage + "%", Color.Black);  // TODO: Progress bar
                     }
                 }
                 AddLog(string.Format("FTP ({0}): Data Transfer Send ({1} / {2}) bytes", e.Remote.Address, e.SentBytes, e.FileSize));
             }
         }
     }
 }
 private async void FtpServer_SentData(object sender, FtpSentDataEventArgs e)
 {
     IUpgradeTasksModel upgradeTaskDataModel = ServiceLocator.Current.GetInstance <IUpgradeTasksModel>();
     await _upgradeTaskQueue.Enqueue(() => Task.Run(() =>
     {
         //var task = upgradeTaskDataModel.Select(
         var task = upgradeTaskDataModel.Data.Where(
             t => t.Status == UpgradeStatus.InProgress &&
             t.Device.ip == e.Remote.Address.ToString()
             //t => t.Device
             ).FirstOrDefault();
         if (task != null)
         {
             task.LastUpdateTime = DateTime.Now;
             task.SentDataBytes  = e.SentBytes;
             try
             {
                 upgradeTaskDataModel.UpdateAsync(
                     task,
                     t => t.SentDataBytes,
                     t => t.LastUpdateTime).Wait();
                 //DebugLog.TraceMessage(string.Format("Sent({0}) Total({1}) - {2} %)", e.SentBytes, e.FileSize, e.SentBytes * 100 / e.FileSize));
             }
             catch (Exception) { }
         }
     }
                                                    ));
 }