繁体   English   中英

在事务内使用Stackexchange.Redis异步方法时的Visual Studio警告

[英]Visual Studio Warning when using Stackexchange.Redis Async methods inside a Transaction

我有以下代码:

var trans = conn.CreateTransaction();
trans.StringSetAsync(keyValuePairs, flags: flags);
trans.SortedSetAddAsync(KeyForAllMessages(), messages.Select(m => new KeyValuePair<RedisValue, double>(m.id, m.id)).ToArray());
trans.SortedSetAddAsync(threadKey, messages.Select(m => new KeyValuePair<RedisValue, double>(m.id, m.id)).ToArray()).GetAwaiter();
return await trans.ExecuteAsync(flags);

上面的代码位于一个名为async的异步方法中:

公共异步任务CacheMessagesAsync(....)

VS 2013下划线显示了三个trans.XXX命令,并显示警告:

因为不等待此调用,所以在调用完成之前将继续执行当前方法。 考虑将“ await”运算符应用于调用结果。

虽然最后一条命令

返回等待trans.ExecuteAsync(flags);

表示该方法等待上述命令。 为什么我会收到警告? 这与Stackexchange.Redis Api调用的实现有关吗,或者我缺少有关编写正确的CTP代码的信息?

您正在等待的只是异步方法之一。 您可能应该以某种方式等待所有方法,以使其他三个方法在代表该方法的任务完成时完成。

如果在下一个任务开始之前完成每个任务很重要,则只需await所有任务即可。

如果你只需要运行所有的人,但他们都可以并行运行,那么你可以通过它们全部Task.WhenAll ,等待这一点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM