gpt4 book ai didi

c# - 如何正确使用任务?

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:21 25 4
gpt4 key购买 nike

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;

错误

Severity Code Description Project File Line Suppression State Error CS4033 The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'. ServerManager

Severity Code Description Project File Line Suppression State Error CS0029 Cannot implicitly convert type 'System.Threading.Tasks.Task>' to 'System.Threading.Tasks.Task' ServerManager

最佳答案

看看你的PingAsync方法签名。它返回什么? Task<List<PingReply>> .添加async关键字不会更改该类型,假设它基本上允许您使用 await方法内部。

因此,通过调用 PingAsync ,你得到一个 Task<List<PingReply>> 类型的对象, 并尝试将其分配给 List<string>引用 - 这给你一个类型不匹配错误。

但是,您可能会问,如何获得实际的 T表格 Task<T> ?你应该简单地使用 await ,就像您在调用 Task.WhenAll 的方法中所做的一样.

List<PingReply> data = await PingAsync();

关于c# - 如何正确使用任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34224939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com