Skip to content

Instantly share code, notes, and snippets.

@bitbonk
Last active June 28, 2019 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bitbonk/2d2b9c94ee475f3d3c725b1006c3e113 to your computer and use it in GitHub Desktop.
Save bitbonk/2d2b9c94ee475f3d3c725b1006c3e113 to your computer and use it in GitHub Desktop.
async v3
private Task completion = Task.CompletedTask;
private int counter;
private async void ButtonOnClick(object sender, RoutedEventArgs e)
{
this.completion = this.completion.ContinueWith(async _ =>
{
this.counter = this.counter + 1;
Debug.WriteLine($"Enter ButtonOnClick {counter}");
await DoSubAsync(counter);
Debug.WriteLine($"Exit ButtonOnClick {counter}");
}).Unwrap();
await this.completion;
}
public async Task DoSubAsync(int number)
{
for (var i = 1; i <= 10; i++)
{
Debug.WriteLine($"\tEnter DoSubAsync {number}.{i}");
await DoSubSubAsync(number, i);
Debug.WriteLine($"\tExit DoSubAsync {number}.{i}");
}
}
public async Task DoSubSubAsync(int number, int subNumber)
{
Debug.WriteLine($"\t\tEnter DoSubSubAsync {number}.{subNumber}");
await Task.Delay(1000);
Debug.WriteLine($"\t\tExit DoSubSubAsync {number}.{subNumber}");
}
Enter ButtonOnClick 1
Enter DoSubAsync 1.1
Enter DoSubSubAsync 1.1
Exit DoSubSubAsync 1.1
Exit DoSubAsync 1.1
Enter DoSubAsync 1.2
Enter DoSubSubAsync 1.2
Exit DoSubSubAsync 1.2
Exit DoSubAsync 1.2
Enter DoSubAsync 1.3
Enter DoSubSubAsync 1.3
Exit DoSubSubAsync 1.3
Exit DoSubAsync 1.3
Enter DoSubAsync 1.4
Enter DoSubSubAsync 1.4
Exit DoSubSubAsync 1.4
Exit DoSubAsync 1.4
Enter DoSubAsync 1.5
Enter DoSubSubAsync 1.5
Exit DoSubSubAsync 1.5
Exit DoSubAsync 1.5
Enter DoSubAsync 1.6
Enter DoSubSubAsync 1.6
Exit DoSubSubAsync 1.6
Exit DoSubAsync 1.6
Enter DoSubAsync 1.7
Enter DoSubSubAsync 1.7
Exit DoSubSubAsync 1.7
Exit DoSubAsync 1.7
Enter DoSubAsync 1.8
Enter DoSubSubAsync 1.8
Exit DoSubSubAsync 1.8
Exit DoSubAsync 1.8
Enter DoSubAsync 1.9
Enter DoSubSubAsync 1.9
Exit DoSubSubAsync 1.9
Exit DoSubAsync 1.9
Enter DoSubAsync 1.10
Enter DoSubSubAsync 1.10
Exit DoSubSubAsync 1.10
Exit DoSubAsync 1.10
Exit ButtonOnClick 1
Enter ButtonOnClick 2
Enter DoSubAsync 2.1
Enter DoSubSubAsync 2.1
Exit DoSubSubAsync 2.1
Exit DoSubAsync 2.1
Enter DoSubAsync 2.2
Enter DoSubSubAsync 2.2
Exit DoSubSubAsync 2.2
Exit DoSubAsync 2.2
Enter DoSubAsync 2.3
Enter DoSubSubAsync 2.3
Exit DoSubSubAsync 2.3
Exit DoSubAsync 2.3
Enter DoSubAsync 2.4
Enter DoSubSubAsync 2.4
Exit DoSubSubAsync 2.4
Exit DoSubAsync 2.4
Enter DoSubAsync 2.5
Enter DoSubSubAsync 2.5
Exit DoSubSubAsync 2.5
Exit DoSubAsync 2.5
Enter DoSubAsync 2.6
Enter DoSubSubAsync 2.6
Exit DoSubSubAsync 2.6
Exit DoSubAsync 2.6
Enter DoSubAsync 2.7
Enter DoSubSubAsync 2.7
Exit DoSubSubAsync 2.7
Exit DoSubAsync 2.7
Enter DoSubAsync 2.8
Enter DoSubSubAsync 2.8
Exit DoSubSubAsync 2.8
Exit DoSubAsync 2.8
Enter DoSubAsync 2.9
Enter DoSubSubAsync 2.9
Exit DoSubSubAsync 2.9
Exit DoSubAsync 2.9
Enter DoSubAsync 2.10
Enter DoSubSubAsync 2.10
Exit DoSubSubAsync 2.10
Exit DoSubAsync 2.10
Exit ButtonOnClick 2
Enter ButtonOnClick 3
Enter DoSubAsync 3.1
Enter DoSubSubAsync 3.1
Exit DoSubSubAsync 3.1
Exit DoSubAsync 3.1
Enter DoSubAsync 3.2
Enter DoSubSubAsync 3.2
Exit DoSubSubAsync 3.2
Exit DoSubAsync 3.2
Enter DoSubAsync 3.3
Enter DoSubSubAsync 3.3
Started Thread 19248
Exit DoSubSubAsync 3.3
Exit DoSubAsync 3.3
Enter DoSubAsync 3.4
Enter DoSubSubAsync 3.4
Exit DoSubSubAsync 3.4
Exit DoSubAsync 3.4
Enter DoSubAsync 3.5
Enter DoSubSubAsync 3.5
Exit DoSubSubAsync 3.5
Exit DoSubAsync 3.5
Enter DoSubAsync 3.6
Enter DoSubSubAsync 3.6
Exit DoSubSubAsync 3.6
Exit DoSubAsync 3.6
Enter DoSubAsync 3.7
Enter DoSubSubAsync 3.7
Exit DoSubSubAsync 3.7
Exit DoSubAsync 3.7
Enter DoSubAsync 3.8
Enter DoSubSubAsync 3.8
Exit DoSubSubAsync 3.8
Exit DoSubAsync 3.8
Enter DoSubAsync 3.9
Enter DoSubSubAsync 3.9
Exit DoSubSubAsync 3.9
Exit DoSubAsync 3.9
Enter DoSubAsync 3.10
Enter DoSubSubAsync 3.10
Exit DoSubSubAsync 3.10
Exit DoSubAsync 3.10
Exit ButtonOnClick 3
Enter ButtonOnClick 4
Enter DoSubAsync 4.1
Enter DoSubSubAsync 4.1
Exit DoSubSubAsync 4.1
Exit DoSubAsync 4.1
Enter DoSubAsync 4.2
Enter DoSubSubAsync 4.2
Exit DoSubSubAsync 4.2
Exit DoSubAsync 4.2
Enter DoSubAsync 4.3
Enter DoSubSubAsync 4.3
Exit DoSubSubAsync 4.3
Exit DoSubAsync 4.3
Enter DoSubAsync 4.4
Enter DoSubSubAsync 4.4
Exit DoSubSubAsync 4.4
Exit DoSubAsync 4.4
Enter DoSubAsync 4.5
Enter DoSubSubAsync 4.5
Exit DoSubSubAsync 4.5
Exit DoSubAsync 4.5
Enter DoSubAsync 4.6
Enter DoSubSubAsync 4.6
Exit DoSubSubAsync 4.6
Exit DoSubAsync 4.6
Enter DoSubAsync 4.7
Enter DoSubSubAsync 4.7
Exit DoSubSubAsync 4.7
Exit DoSubAsync 4.7
Enter DoSubAsync 4.8
Enter DoSubSubAsync 4.8
Exit DoSubSubAsync 4.8
Exit DoSubAsync 4.8
Enter DoSubAsync 4.9
Enter DoSubSubAsync 4.9
Exit DoSubSubAsync 4.9
Exit DoSubAsync 4.9
Enter DoSubAsync 4.10
Enter DoSubSubAsync 4.10
Exit DoSubSubAsync 4.10
Exit DoSubAsync 4.10
Exit ButtonOnClick 4
Enter ButtonOnClick 5
Enter DoSubAsync 5.1
Enter DoSubSubAsync 5.1
Exit DoSubSubAsync 5.1
Exit DoSubAsync 5.1
Enter DoSubAsync 5.2
Enter DoSubSubAsync 5.2
Exit DoSubSubAsync 5.2
Exit DoSubAsync 5.2
Enter DoSubAsync 5.3
Enter DoSubSubAsync 5.3
Exit DoSubSubAsync 5.3
Exit DoSubAsync 5.3
Enter DoSubAsync 5.4
Enter DoSubSubAsync 5.4
Exit DoSubSubAsync 5.4
Exit DoSubAsync 5.4
Enter DoSubAsync 5.5
Enter DoSubSubAsync 5.5
Exit DoSubSubAsync 5.5
Exit DoSubAsync 5.5
Enter DoSubAsync 5.6
Enter DoSubSubAsync 5.6
Exit DoSubSubAsync 5.6
Exit DoSubAsync 5.6
Enter DoSubAsync 5.7
Enter DoSubSubAsync 5.7
Exit DoSubSubAsync 5.7
Exit DoSubAsync 5.7
Enter DoSubAsync 5.8
Enter DoSubSubAsync 5.8
Exit DoSubSubAsync 5.8
Exit DoSubAsync 5.8
Enter DoSubAsync 5.9
Enter DoSubSubAsync 5.9
Exit DoSubSubAsync 5.9
Exit DoSubAsync 5.9
Enter DoSubAsync 5.10
Enter DoSubSubAsync 5.10
Exit DoSubSubAsync 5.10
Exit DoSubAsync 5.10
Exit ButtonOnClick 5
Enter ButtonOnClick 6
Enter DoSubAsync 6.1
Enter DoSubSubAsync 6.1
Exit DoSubSubAsync 6.1
Exit DoSubAsync 6.1
Enter DoSubAsync 6.2
Enter DoSubSubAsync 6.2
Exit DoSubSubAsync 6.2
Exit DoSubAsync 6.2
Enter DoSubAsync 6.3
Enter DoSubSubAsync 6.3
Exit DoSubSubAsync 6.3
Exit DoSubAsync 6.3
Enter DoSubAsync 6.4
Enter DoSubSubAsync 6.4
Exit DoSubSubAsync 6.4
Exit DoSubAsync 6.4
Enter DoSubAsync 6.5
Enter DoSubSubAsync 6.5
Exit DoSubSubAsync 6.5
Exit DoSubAsync 6.5
Enter DoSubAsync 6.6
Enter DoSubSubAsync 6.6
Exit DoSubSubAsync 6.6
Exit DoSubAsync 6.6
Enter DoSubAsync 6.7
Enter DoSubSubAsync 6.7
Exit DoSubSubAsync 6.7
Exit DoSubAsync 6.7
Enter DoSubAsync 6.8
Enter DoSubSubAsync 6.8
Exit DoSubSubAsync 6.8
Exit DoSubAsync 6.8
Enter DoSubAsync 6.9
Enter DoSubSubAsync 6.9
Exit DoSubSubAsync 6.9
Exit DoSubAsync 6.9
Enter DoSubAsync 6.10
Enter DoSubSubAsync 6.10
Exit DoSubSubAsync 6.10
Exit DoSubAsync 6.10
Exit ButtonOnClick 6
Enter ButtonOnClick 7
Enter DoSubAsync 7.1
Enter DoSubSubAsync 7.1
Exit DoSubSubAsync 7.1
Exit DoSubAsync 7.1
Enter DoSubAsync 7.2
Enter DoSubSubAsync 7.2
Exit DoSubSubAsync 7.2
Exit DoSubAsync 7.2
Enter DoSubAsync 7.3
Enter DoSubSubAsync 7.3
Exit DoSubSubAsync 7.3
Exit DoSubAsync 7.3
Enter DoSubAsync 7.4
Enter DoSubSubAsync 7.4
Exit DoSubSubAsync 7.4
Exit DoSubAsync 7.4
Enter DoSubAsync 7.5
Enter DoSubSubAsync 7.5
Exit DoSubSubAsync 7.5
Exit DoSubAsync 7.5
Enter DoSubAsync 7.6
Enter DoSubSubAsync 7.6
Exit DoSubSubAsync 7.6
Exit DoSubAsync 7.6
Enter DoSubAsync 7.7
Enter DoSubSubAsync 7.7
Exit DoSubSubAsync 7.7
Exit DoSubAsync 7.7
Enter DoSubAsync 7.8
Enter DoSubSubAsync 7.8
Exit DoSubSubAsync 7.8
Exit DoSubAsync 7.8
Enter DoSubAsync 7.9
Enter DoSubSubAsync 7.9
Exit DoSubSubAsync 7.9
Exit DoSubAsync 7.9
Enter DoSubAsync 7.10
Enter DoSubSubAsync 7.10
Exit DoSubSubAsync 7.10
Exit DoSubAsync 7.10
Exit ButtonOnClick 7
Enter ButtonOnClick 8
Enter DoSubAsync 8.1
Enter DoSubSubAsync 8.1
Exit DoSubSubAsync 8.1
Exit DoSubAsync 8.1
Enter DoSubAsync 8.2
Enter DoSubSubAsync 8.2
Exit DoSubSubAsync 8.2
Exit DoSubAsync 8.2
Enter DoSubAsync 8.3
Enter DoSubSubAsync 8.3
Exit DoSubSubAsync 8.3
Exit DoSubAsync 8.3
Enter DoSubAsync 8.4
Enter DoSubSubAsync 8.4
Exit DoSubSubAsync 8.4
Exit DoSubAsync 8.4
Enter DoSubAsync 8.5
Enter DoSubSubAsync 8.5
Exit DoSubSubAsync 8.5
Exit DoSubAsync 8.5
Enter DoSubAsync 8.6
Enter DoSubSubAsync 8.6
Exit DoSubSubAsync 8.6
Exit DoSubAsync 8.6
Enter DoSubAsync 8.7
Enter DoSubSubAsync 8.7
Exit DoSubSubAsync 8.7
Exit DoSubAsync 8.7
Enter DoSubAsync 8.8
Enter DoSubSubAsync 8.8
Exit DoSubSubAsync 8.8
Exit DoSubAsync 8.8
Enter DoSubAsync 8.9
Enter DoSubSubAsync 8.9
Exit DoSubSubAsync 8.9
Exit DoSubAsync 8.9
Enter DoSubAsync 8.10
Enter DoSubSubAsync 8.10
Exit DoSubSubAsync 8.10
Exit DoSubAsync 8.10
Exit ButtonOnClick 8
Enter ButtonOnClick 9
Enter DoSubAsync 9.1
Enter DoSubSubAsync 9.1
Exit DoSubSubAsync 9.1
Exit DoSubAsync 9.1
Enter DoSubAsync 9.2
Enter DoSubSubAsync 9.2
Exit DoSubSubAsync 9.2
Exit DoSubAsync 9.2
Enter DoSubAsync 9.3
Enter DoSubSubAsync 9.3
Exit DoSubSubAsync 9.3
Exit DoSubAsync 9.3
Enter DoSubAsync 9.4
Enter DoSubSubAsync 9.4
Exit DoSubSubAsync 9.4
Exit DoSubAsync 9.4
Enter DoSubAsync 9.5
Enter DoSubSubAsync 9.5
Exit DoSubSubAsync 9.5
Exit DoSubAsync 9.5
Enter DoSubAsync 9.6
Enter DoSubSubAsync 9.6
Exit DoSubSubAsync 9.6
Exit DoSubAsync 9.6
Enter DoSubAsync 9.7
Enter DoSubSubAsync 9.7
Exit DoSubSubAsync 9.7
Exit DoSubAsync 9.7
Enter DoSubAsync 9.8
Enter DoSubSubAsync 9.8
Exit DoSubSubAsync 9.8
Exit DoSubAsync 9.8
Enter DoSubAsync 9.9
Enter DoSubSubAsync 9.9
Exit DoSubSubAsync 9.9
Exit DoSubAsync 9.9
Enter DoSubAsync 9.10
Enter DoSubSubAsync 9.10
Exit DoSubSubAsync 9.10
Exit DoSubAsync 9.10
Exit ButtonOnClick 9
Enter ButtonOnClick 10
Enter DoSubAsync 10.1
Enter DoSubSubAsync 10.1
Exit DoSubSubAsync 10.1
Exit DoSubAsync 10.1
Enter DoSubAsync 10.2
Enter DoSubSubAsync 10.2
Exit DoSubSubAsync 10.2
Exit DoSubAsync 10.2
Enter DoSubAsync 10.3
Enter DoSubSubAsync 10.3
Exit DoSubSubAsync 10.3
Exit DoSubAsync 10.3
Enter DoSubAsync 10.4
Enter DoSubSubAsync 10.4
Exit DoSubSubAsync 10.4
Exit DoSubAsync 10.4
Enter DoSubAsync 10.5
Enter DoSubSubAsync 10.5
Exit DoSubSubAsync 10.5
Exit DoSubAsync 10.5
Enter DoSubAsync 10.6
Enter DoSubSubAsync 10.6
Exit DoSubSubAsync 10.6
Exit DoSubAsync 10.6
Enter DoSubAsync 10.7
Enter DoSubSubAsync 10.7
Exit DoSubSubAsync 10.7
Exit DoSubAsync 10.7
Enter DoSubAsync 10.8
Enter DoSubSubAsync 10.8
Exit DoSubSubAsync 10.8
Exit DoSubAsync 10.8
Enter DoSubAsync 10.9
Enter DoSubSubAsync 10.9
Exit DoSubSubAsync 10.9
Exit DoSubAsync 10.9
Enter DoSubAsync 10.10
Enter DoSubSubAsync 10.10
Exit DoSubSubAsync 10.10
Exit DoSubAsync 10.10
Exit ButtonOnClick 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment