private async Task InstallOrUpdatePlugins(IList <Plugin> plugins) { if (_semaphore.Wait(100)) { try { var tasks = new List <Task>(); foreach (var plug in plugins) { var pluginDownloader = new PluginDownloader(plug, false, _api, _updateHub, _coreServer, _loader, false); tasks.Add(pluginDownloader.Download()); } await Task.WhenAll(tasks.ToArray()); _coreServer.Restart(); } finally { _semaphore.Release(); } } }
private Task DownloadPlugin(Plugin plugin, bool install) { Task.Run(async() => { var pluginDownloader = new PluginDownloader(plugin, install, _api, _updateHub, _coreServer); await pluginDownloader.Download(); }); return(Task.CompletedTask); }
public Task UpdateAllPlugin(IList <Plugin> plugins) { foreach (var plug in plugins) { Task.Run(async() => { var pluginDownloader = new PluginDownloader(plug, false, _api, _updateHub, _coreServer, false); await pluginDownloader.Download(); }); } return(Task.CompletedTask); }
private Task DownloadPlugin(Plugin plugin, bool install) { Task.Run(async() => { if (!await _semaphore.WaitAsync(10)) { return; } try { var pluginDownloader = new PluginDownloader(plugin, install, _api, _updateHub, _coreServer, _loader); await pluginDownloader.Download(); } finally { _semaphore.Release(); } }); return(Task.CompletedTask); }