首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >foreach with await方法

foreach with await方法
EN

Stack Overflow用户
提问于 2013-02-28 04:39:34
回答 2查看 469关注 0票数 0

这段代码检查2个连接到套接字的客户端,其中一个客户端先按下一个按钮,连接和接收工作正常,但如果我单击deelnemersTimer和客户端字典中第二个客户端的按钮,它不会做任何事情,它将一直等待,直到我单击字典中第一个按钮。我很确定是foreach中的等待是错误的,但是我需要做些什么才能让它正常工作呢?

客户端是一个包含客户端名称及其套接字的字典。deelnemersTimers是一个字典,里面有客户的名字和他们点击按钮的时间。deelnemer也是参与者的荷兰语。

代码语言:javascript
复制
foreach (Deelnemer deelnemer in deelnemers)
{
    deelnemersTimer[deelnemer.DeelnemerVoornaam + " " + deelnemer.DeelnemerNaam] = await CheckButtons(clients[deelnemer.DeelnemerVoornaam + " " + deelnemer.DeelnemerNaam]);
}
deelnemersTimer.Values.Min();
var eerste = deelnemersTimer.Where(p => p.Value == deelnemersTimer.Values.Min()).Select(p => p.Key).FirstOrDefault();
代码语言:javascript
复制
private async Task<long> CheckButtons(StreamSocket socket)
{
    DataReader reader = new DataReader(socket.InputStream);

    var actualStringLength = await reader.LoadAsync(1);
    long time = stopwatch.ElapsedMilliseconds;

    return time;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-28 07:29:18

您可以通过创建另一个方法来设置deelnemersTimereerste,然后在不使用awaiting的情况下调用该方法(至少不是立即调用):

代码语言:javascript
复制
private Task ProcessButton(Deelnemer deelnemer)
{
   string id = deelnemer.DeelnemerVoornaam + " " + deelnemer.DeelnemerNaam;
   deelnemersTimer[id] = await CheckButtons(clients[id]);

   // is this the first one?
   if (eerste == null)
       eerste = id;
}

…

var tasks = deelnemers.Select(ProcessButton);
await Task.WhenAll(tasks);

(这里假设deelnemersTimereerste都是字段。)

这样,您就可以同时开始处理每个按钮,并在完成时设置结果。

票数 0
EN

Stack Overflow用户

发布于 2013-02-28 05:06:30

代码执行的正是您告诉它做的事情:对于每个连接,(异步地)等待单击该连接的按钮。

如果你想监听同时点击所有连接的按钮,你可以这样做:

代码语言:javascript
复制
var buttonTasks = deelnemers.Select(deelnemer => CheckButtons(clients[deelnemer.DeelnemerVoornaam + " " + deelnemer.DeelnemerNaam]));
var buttonsClicked = await Task.WhenAll(buttonTasks);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15121931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档