C# Async Await用法演示的代码

2018-12-18  本文已影响0人  程序媛宝

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

public void Main()

{

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

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

}

public async Task<bool> LaunchTasks(List<int> waitTimes)

{

    bool result = false;

    List<Task> tasks = new List<Task>();

    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<bool> FirstWait(int waitTime)

{

    var task = Task.Factory.StartNew<bool>((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<bool> SecondWait(int waitTime)

{

    var task = Task.Factory.StartNew<bool>((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;

}

上一篇下一篇

猜你喜欢

热点阅读