private bool ReadBDROM(CancellationToken cancellationToken, string bdromPath) { IDiscReaderPlugin discReader = _pluginRepository.DiscReaderPlugins.First(plugin => plugin.Enabled); var pluginTask = RunPluginSync(cancellationToken, discReader, delegate(CancellationToken token) { var disc = discReader.ReadBDROM(token, bdromPath); if (!token.IsCancellationRequested) { Job = new Job(disc); } }); return(pluginTask.IsCompleted && pluginTask.Result); }
private bool ReadBDROM(CancellationToken cancellationToken, string bdromPath) { IDiscReaderPlugin discReader = _pluginRepository.DiscReaderPlugins.First(plugin => plugin.Enabled); var pluginTask = RunPluginSync(cancellationToken, discReader, delegate(CancellationToken token) { var disc = discReader.ReadBDROM(token, bdromPath); if (!token.IsCancellationRequested) { var prevJob = Job; // Create a new job for the current disc Job = new Job(disc); // Restore the previous job if the current one is canceled cancellationToken.Register(() => Job = prevJob); } }); return(pluginTask.IsCompleted && pluginTask.Result); }