async Task OpenResource(ResourceNode node, Task canStart) { await canStart; foreach (var dep in node.StrongDependencies) { await openTasks[dep]; } Stopwatch swatch = Stopwatch.StartNew(); // start a new thread to do synchronous work await Task.Factory.StartNew(node.Resource.Open); var reslog = GetLogSource(node.Resource); reslog.Info(swatch, "Resource \"{0}\" opened.", node.Resource); foreach (var dep in node.WeakDependencies) { await openTasks[dep]; } ResourceOpened?.Invoke(node.Resource); }
protected virtual void OnResourceOpened(ResourceOpenedEventArgs e) { ResourceOpened?.Invoke(this, e); }
void ResourceOpenedCallback(IResource resource) { ResourceOpened?.Invoke(resource); }