I have a requirement to connect to the server
and collect data for processing.
Here is the Connect
method
private readonly ServerComLibrary _vMyServer;// this is initialised in constructor
public ConnectToServer(string servername)
{
_vMyServer.connectToServerByName("ssl",servername);
}
_vMyServer
has below events
- onConnectSucceeded - I will collect data and copy it to excel file
- onConnectFailed - just log the exception
Here is a connection success event
private void Handle_OnConnectSucceeded()
{
//collect data and create excel
}
Here is a Failed event
private void Handle_OnConnectFailed(int hr)
{
//log exception
}
Everything works fine!
But, now my requirement is to connect to multiple servers one by one
List<Server> servers = ConfigurationManager.GetSection("servers") as List<Server>;
var datacollectionTasks = new List<Task>();
foreach (var server in servers)
{
var data = Task.Run(() => ConnectToServer(server.serveraddress));
datacollectionTasks.Add(dataFix);
}
await Task.WhenAll(datacollectionTasks);
I want to start the second task
only after first task
of connecting to the server and creating excel generation compleats or connection fails.
How can I do it? I may use ContinueWith
but not sure how to confirm if events fired and job completed.