我有一個'主'服務器,和其他幾個服務器(擴展)需要由主服務器控制。與多個Web服務器異步通信C#
該擴展每個都有一個Web引用到其各自的服務器。控制這些擴展是由Init(),開始()和停止()網絡調用。到現在爲止,我這樣做同步,例如主服務器調用:
public void InitExtensions()
{
foreach (Extension extension in GetEnabledExtensionList())
{
extension.Init();
}
}
而且比:
public void StartExtensions()
{
foreach (Extension extension in GetEnabledExtensionList())
{
extension.Start();
}
}
凡extension.Init()和extension.Start()會做網絡電話。
現在我想這樣做異步,但棘手的部分是,StartExtensions()方法應該等待extension.Init()完成。不同的分機當然可以在另一個被初始化之前啓動。
這樣做的最好方法是什麼?我想我會需要例如列出
List<Thread> _InitThreads;
List<Thread> _StartThreads;
List<Thread> _StopThreads;
,並檢查是否每個列表包含了相應的擴展創建線程,並加入()它等待執行。然而,這變得很難非常快...
謝謝,它的工作原理! –
我很樂意提供幫助。你能把它標記爲答案嗎? – andrisbandris