Merge pull request #5675 from mono/glib-debug-symbols
[mono.git] / mcs / tests / test-async-78.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading;
5 using System.Threading.Tasks;
6
7 public static class ExceptionHelper
8 {
9         public static async Task ConditionalCatchExceptThreadAbortAsync (Func<Task>
10                 funcTask, Action<Exception> conditionalCatchAction)
11         {
12                 funcTask ();
13                 return;
14         }
15 }
16
17 class ATask
18 {
19         readonly object _asyncTaskCancellationSource = new object ();
20
21         readonly object aname;
22
23         public async Task<bool> OnDoWorkAsync ()
24         {
25                 await ExceptionHelper.ConditionalCatchExceptThreadAbortAsync (
26                         async () => {
27                                 if (_asyncTaskCancellationSource != null) {
28                                         string item = null;
29
30                                         await ExceptionHelper.ConditionalCatchExceptThreadAbortAsync (
31                                                 async () => {
32                                                         Console.WriteLine (aname);
33                                                 },
34                                                 (e) => {
35                                                         Console.WriteLine (item);
36                                                 }
37                                         );
38                                 }
39                         },
40                         null
41                         );
42
43                 return true;
44         }
45 }
46
47 public class Tests
48 {
49         public static void Main ()
50         {
51                 var a = new ATask ();
52                 var res = a.OnDoWorkAsync ().Result;
53         }
54 }