/** * This method uses a Task approach to request a new Magic Number * asynchronously, by using await keyword. The caller method does * so as weel, so it waits for a Task<int> which actually comes out * as a plain int. * */ private async Task <int> RequestMagicNumber() { MagicNumberCreator mnc = new MagicNumberCreator(); int newMagicNumber = await Task.Run(() => mnc.CreateMagicNumber()); return(newMagicNumber); }
private async Task CreateNewMagicNumber() { cancelationRequested = true; MagicNumberCreator mnc = new MagicNumberCreator(); int newMagicNumber = await RequestMagicNumber(); /* * This section runs only after the MagicNumber creation * process is finished. In the meanwhile, the 'cancelationRequested' * flag might be changed from the User request (via UI). In this * case the process of showing a new Magic Number is dropped. */ if (cancelationRequested) { cancelationRequested = false; MagicNumberBox.Text = newMagicNumber.ToString(); RestoreControls(); } }