protected virtual void OnTaskStateChanged(AsyncTaskEventArgs e) { switch (e.Task.State) { case AsyncTaskState.Running: break; case AsyncTaskState.Cancelled: case AsyncTaskState.Completed: break; } if (TaskStateChanged != null) { TaskStateChanged(this, e); } }
private void taskManager_TaskStateChanged(object sender, AsyncTaskEventArgs e) { Invoke(new MethodInvoker(() => { if (e.Task.State == AsyncTaskState.Completed) { var attrs = e.Task.GetType().GetCustomAttributes(typeof(AccountFileStateChangeAttribute), true); if (attrs.Length != 0) { var attr = (AccountFileStateChangeAttribute)attrs[0]; var fileProp = e.Task.GetType().GetProperty(attr.FilePropertyName); var file = (AccountFile)fileProp.GetValue(e.Task); var parentFileProp = attr.ParentFilePropertyName == null ? null : e.Task.GetType().GetProperty(attr.ParentFilePropertyName); var parentFile = parentFileProp == null ? null : (AccountFile)parentFileProp.GetValue(e.Task); if (file.IsFile) { if (attr.NewState == AccountFileStates.New) { fileListView.AddFile(file, accounts.GetName(file.Account)); } else { foreach (ListViewItem x in fileListView.Items) { var info = (NodeInfo)x.Tag; if (info.File == file) { fileListView.UpdateFileListItem(attr.NewState, x); if (driveStrip1.File == file) { driveStrip1.RefreshData(); } break; } } } } else // IsFolder { if (attr.NewState == AccountFileStates.New) { foreach (var x in Oblqo.Controls.ControlUtil.GetAllTreeViewNodes(treeView1)) { var info = (NodeInfo)x.Tag; if (info.File == parentFile) { AddNode(file, x, info.AccountName); break; } } } else { foreach (var x in Oblqo.Controls.ControlUtil.GetAllTreeViewNodes(treeView1)) { var info = (NodeInfo)x.Tag; if (info.File == file) { Oblqo.Controls.ControlUtil.UpdateTeeViewNode(attr.NewState, x); } } } } } } switch (e.Task.State) { case AsyncTaskState.Completed: if (e.Task is CreateFolderTask) { var task = (CreateFolderTask)e.Task; var parentNode = task.Tag as TreeNode; if (parentNode != null) { var viewNode = parentNode.Nodes.Add("", task.FolderName, FolderImageKey); viewNode.SelectedImageKey = FolderImageKey; viewNode.Tag = new NodeInfo(task.CreatedFolder, task.AccountName); } } else if (e.Task is UploadFolderTask) { var task = (UploadFolderTask)e.Task; var parentNode = task.Tag as TreeNode; if (parentNode != null) { var viewNode = parentNode.Nodes.Add("", task.FolderName, FolderImageKey); viewNode.SelectedImageKey = FolderImageKey; viewNode.Tag = new NodeInfo(task.CreatedFolder, task.AccountName); } } else if (e.Task is UploadFileTask) { var task = (UploadFileTask)e.Task; var parentNode = task.Tag as TreeNode; var selectedNode = treeView1.SelectedNode; if (parentNode != null && selectedNode == parentNode) { UpdateFileList(); } } else if (e.Task is DeleteFileTask) { var task = (DeleteFileTask)e.Task; var listItem = task.Tag as ListViewItem; listItem?.Remove(); } else if (e.Task is DeleteFolderTask) { var task = (DeleteFolderTask)e.Task; var node = task.Tag as TreeNode; node?.Remove(); } break; } })); }