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) { } } } )); }