none
为什么我循环调用异步方法,方法的结果却是在所有的异步方法完成后才能返回 RRS feed

  • 问题

  • 我想实现这样一个功能:循环异步调用一个方法10次,在每次的完成时候,将返回的结果显示到界面上,我的代码逻辑如下:

    for (int i = 0; i < 10; i++)
                {
                    TextBox Message = new TextBox();
                    Root.Children.Add(Message);
                    string result = string.Empty;
                    await ThreadPool.RunAsync(delegate { result = DoSomething(i); });
                    Message.Text += result;
                }

    其中DoSomething大约执行5秒,我本以为界面上会每隔5秒显示一个结果,但是运行后的结果却是,我等了大约50秒,才看见这10个结果以较短的时间间隔(大约0.5秒)依次呈现出来,而在此前近50秒的等待中,没有任何结果显示。

    如何才能做到每个5秒显示一个结果?

    2012年12月27日 7:35

答案

  • 参考在united States上的帖子:

    http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/f01caf53-c665-4f83-889e-acf0554a838e

    • 已标记为答案 余进康 2012年12月31日 6:19
    2012年12月28日 4:28

全部回复