Ich habe einen ‚Haupt‘ Server und einige andere Server (Extensions), die vom Hauptserver gesteuert werden müssen.Asynchrone Kommunikation mit mehreren Webservern C#
Die Extensions haben jeweils eine Web-Referenz auf ihren jeweiligen Server. Die Steuerung dieser Erweiterungen erfolgt durch Init(), Start() und Stop() Web-Anrufe. Bis jetzt habe ich diese synchron, der Hauptserver zum Beispiel ruft:
public void InitExtensions()
{
foreach (Extension extension in GetEnabledExtensionList())
{
extension.Init();
}
}
Und als:
public void StartExtensions()
{
foreach (Extension extension in GetEnabledExtensionList())
{
extension.Start();
}
}
Wo die extension.Init() und extension.Start() wird Webcalls machen.
Jetzt möchte ich dies asynchron tun, aber der schwierige Teil ist, dass die StartExtensions() Methode warten sollte, bis die extension.Init() abgeschlossen ist. Eine andere Erweiterung kann natürlich gestartet werden, bevor eine andere initialisiert wird.
Was ist der beste Weg, dies zu tun? Ich denke, ich werde zum Beispiel brauchen listet
List<Thread> _InitThreads;
List<Thread> _StartThreads;
List<Thread> _StopThreads;
und überprüfen, ob jede Liste einen Thread für die jeweilige Erweiterung enthält, und Join() er die Ausführung warten. Dies wird jedoch sehr schwierig, sehr schnell ...
Danke, es funktioniert! –
Ich bin glücklich zu helfen. Könnten Sie es als Antwort markieren? – andrisbandris