public WorkspaceItem ReloadItem(IProgressMonitor monitor, WorkspaceItem item) { if (Items.IndexOf(item) == -1) { throw new InvalidOperationException("Item '" + item.Name + "' does not belong to workspace '" + Name + "'"); } // Load the new item WorkspaceItem newItem; try { newItem = Services.ProjectService.ReadWorkspaceItem(monitor, item.FileName); } catch (Exception ex) { UnknownWorkspaceItem e = new UnknownWorkspaceItem(); e.LoadError = ex.Message; e.FileName = item.FileName; newItem = e; } // Replace in the file list Items.Replace(item, newItem); NotifyModified(); NotifyItemRemoved(new WorkspaceItemChangeEventArgs(item, true)); NotifyItemAdded(new WorkspaceItemChangeEventArgs(newItem, true)); item.Dispose(); return(newItem); }
public Task<WorkspaceItem> ReloadItem (ProgressMonitor monitor, WorkspaceItem item) { return Runtime.RunInMainThread (async delegate { if (Items.IndexOf (item) == -1) throw new InvalidOperationException ("Item '" + item.Name + "' does not belong to workspace '" + Name + "'"); // Load the new item WorkspaceItem newItem; try { newItem = await Services.ProjectService.ReadWorkspaceItem (monitor, item.FileName); } catch (Exception ex) { UnknownWorkspaceItem e = new UnknownWorkspaceItem (); e.LoadError = ex.Message; e.FileName = item.FileName; newItem = e; } // Replace in the file list Items.Replace (item, newItem); NotifyModified (); NotifyItemRemoved (new WorkspaceItemChangeEventArgs (item, true)); NotifyItemAdded (new WorkspaceItemChangeEventArgs (newItem, true)); item.Dispose (); return newItem; }); }