private async Task LoadDataAsync() { await EnsureDownloadedAsync(); // this has to be loaded first LoadMetaZones(); // these can be loaded in parallel var actions = new Action[] { LoadZoneCountries, LoadZoneAliases, LoadWindowsMappings, LoadLanguages }; await Task.WhenAll(actions.Select(Task.Run)); }
public override ActionDescriptor OnTick(Action[] soloActions, Dictionary<Character, Action[]> characterActions) { Character[] allCharacters = CurrentRoom.GetCharacters(this).ToArray(); bool[] characterEnables = allCharacters.Select(c => characterActions.ContainsKey(c)).ToArray(); Character[] characters = characterActions.Keys.ToArray(); BothButton view = new BothButton(this, allCharacters, characterEnables, soloActions.Select(a => a.Label).ToArray(), null, notificator); main.LaunchView(view); if (!view.SelectedTop) return new ActionDescriptor(soloActions[view.SelectedIndex], this, null); Character selectedCharacter = allCharacters[view.SelectedIndex]; //Player selected a character. TextTopBottomButton secondView = new TextTopBottomButton(new Character[] { selectedCharacter }, this, "What would you like to do with " + selectedCharacter.Fullname, characterActions[selectedCharacter].Select(a => a.Label).ToArray(), null, notificator); main.LaunchView(secondView); return new ActionDescriptor(characterActions[selectedCharacter][secondView.SelectedIndex], this, selectedCharacter); }
private void ExitApplication() { var shutDownActions = new Action[] { () => _kataFilesMonitor?.Stop(), () => _playerNotifier?.Dispose(), () => _gameMonitor?.Dispose(), () => _reminderTimer?.Stop(), () => _monitorTimer?.Stop(), }; var cancellationTokenSource = new CancellationTokenSource(5000); var tasks = shutDownActions .Select(action => Task.Run(() => TryDo(action), cancellationTokenSource.Token)) .ToArray(); Task.WaitAll(tasks); System.Windows.Application.Current.Shutdown(); }
public static bool IsConform(IEquationBuilder subject) { var callingTests = new Action<IEquationBuilder>[] { s => s.Value(0), s => s.Literal("x"), s => s.Add(), s => s.Divide(), s => s.Divide(b => { }), s => s.Parentheses(b => { }) }; Func<Action<IEquationBuilder>, bool> callingTestWrapper = test => { var passed = true; try { test(subject); } catch (RuntimeBinderException) { passed = false; } return passed; }; var searchingTest = new Func<IEquationBuilder, MethodInfo>[] { s => s.GetType().GetMethod("CreateItem", new Type[] { typeof(IIdentifier) }), s => s.GetType().GetMethod("CreateItem", new Type[] { typeof(IIdentifier), typeof(IItem).MakeByRefType() }) }; Func<Func<IEquationBuilder, MethodInfo>, bool> searchingTestWrapper = test => test(subject) != null; return callingTests.Select(callingTestWrapper) .Concat(searchingTest.Select(searchingTestWrapper)) .All(result => result == true); }