我似乎无法理解如何构建对SendPingAsync的异步调用。我想循环访问IP地址列表,并在程序中继续进行所有的异步ping命令......现在,需要永久地逐个查看所有的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文档和大量的问题,我只是没有得到它。
我不得不修改ip => pingSender.SendPingAsync(ip,2000)“ip => new Ping()。SendPingAsync(ip,2000)否则会抛出”System.InvalidOperationException:异步调用已在进行中。必须完成或取消之后才能调用此方法“ – pingo
什么是ListOfIP? –
@softwareisfun IP列表。 –