【发布时间】:2014-03-31 11:20:09
【问题描述】:
我似乎无法理解如何构造对 SendPingAsync 的异步调用。我想遍历一个 IP 地址列表并异步 ping 它们,然后再继续程序……现在,一次遍历所有这些地址需要很长时间。我早些时候问了一个关于它的问题,以为我能够弄清楚异步,但显然我错了。
private void button1_Click(object sender, EventArgs e)
{
this.PingLoop();
MessageBox.Show("hi"); //for testing
}
public async void PingLoop()
{
Task<int> longRunningTask = PingAsync();
int result = await longRunningTask;
MessageBox.Show("async call is finished!");
//eventually want to loop here but for now just want to understand how this works
}
private async Task<int> PingAsync()
{
Ping pingSender = new Ping();
string reply = pingSender.SendPingAsync("www.google.com", 2000).ToString();
pingReplies.Add(reply); //what should i be awaiting here??
return 1;
}
恐怕我只是不明白这里到底发生了什么……我应该什么时候返回任务?当我按原样运行时,我只会得到一个冻结的 UI 和一个 ping 错误。我在这里阅读了 MSDN 文档和大量问题,但我就是不明白。
【问题讨论】:
标签: c# multithreading ping