C# Async Await用法演示的代码

如下的代码是关于C# Async Await用法演示的代码,希望对码农也有用处。

public void Main()

{

    var result = LaunchTasks(new List() { 5, 3 });

    Debug.WriteLine("The final result is {0}",result.Result);

}

public async Task LaunchTasks(List waitTimes)

{

    bool result = false;

    List tasks = new List();

    try

    {

      foreach (int wait in waitTimes)

      {

          var task1 = FirstWait(wait);

          tasks.Add(task1);

          var task2 = SecondWait(wait);

          tasks.Add(task2);

      }

      Debug.WriteLine("About to await on {0} Tasks", tasks.Count);

      await Task.WhenAll(tasks);

      Debug.WriteLine("After WhenAll");

    }

    catch (Exception ex)

    {

    }

    return result;

}

private async Task FirstWait(int waitTime)

{

    var task = Task.Factory.StartNew((delay) =>

    {

        try

        {

            int count = (int)delay;

            for (int i = 0; i < count; i++)

            {

                Debug.WriteLine("FirstWait is at {0}", i);

            }

        }

        catch (Exception ex)

        {

            Debug.WriteLine(ex.Message);

        }

        return true;

    }, waitTime);

    await Task.WhenAll(task);

    Debug.WriteLine("After FirstWait");

    return task.Result;

}

private async Task SecondWait(int waitTime)

{

    var task = Task.Factory.StartNew((delay) =>

    {

        try

        {

            int count = (int)delay;

            for (int i = 0; i < count; i++)

            {

                Debug.WriteLine("SecondWait is at {0}", i);

            }

        }

        catch (Exception ex)

        {

            Debug.WriteLine(ex.Message);

        }

        return true;

    }, waitTime);

    await Task.WhenAll(task);

    Debug.WriteLine("After SecondWait");

    return task.Result;

}

你可能感兴趣的:(C# Async Await用法演示的代码)