【发布时间】:2016-03-17 10:46:37
【问题描述】:
private async Task<List<PingReply>> PingAsync()
{
Ping pingSender = new Ping();
var tasks = serverNames.Select(ip => pingSender.SendPingAsync(ip, 2000));
var results = await Task.WhenAll(tasks);
return results.ToList();
}
我的问题是如何执行这个方法?
我试过了
List<string> data = PingAsync();
但我收到此错误消息
Error CS0029 Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Collections.Generic.List<System.Net.NetworkInformation.PingReply>>' to 'System.Collections.Generic.List<string>' ServerManager
我正在尝试 ping 服务器并更新 UI,以便我们可以监控服务器。
我也试过这些
Task<PingReply> longRunningTask = PingAsync();
PingReply result = await longRunningTask;
错误
严重性代码描述项目文件行抑制状态 错误 CS4033 'await' 运算符只能在异步中使用 方法。考虑用'async'修饰符标记这个方法和 将其返回类型更改为“任务”。服务器管理器
严重性代码描述项目文件行抑制状态 错误 CS0029 无法隐式转换类型 'System.Threading.Tasks.Task>' 到 'System.Threading.Tasks.Task' 服务器管理器
【问题讨论】:
-
你需要等待那个方法
List<string> data = await PingAsync(); -
我认为您应该尝试理解错误消息,因为按照书面说明,这不可能工作。无论如何,您迟早需要了解这一点。