Sahil, чего вы пытаетесь достичь, убедившись, что соединение по всем нитям называется без необходимости ждать выполнения каждого из них? Если это для производительности, это не поможет, так как в любом случае, даже если вы вызываете thread.join для всех потоков, он должен дождаться завершения каждого потока, прежде чем продолжить.
В любом случае, если необходимо, то вот что я должен сказать:
Там нет прямого метода ожидания всех потоков в одном зЬтЬ. Вместо этого после некоторого R & D я придумал небольшой косвенный метод. Вместо инициализации потока и передачи ему ParameterizedThreadDelegate вы можете непосредственно выполнить BeginInvoke в ParameterizedThreadDelegate. И затем вы можете использовать WaitHandle.WaitAll, чтобы дождаться, пока все делегаты закончат выполнение, прежде чем продолжить.
Вот код:
class Program
{
static void Main(string[] args)
{
List<ParameterizedThreadStart> listDelegates = new List<ParameterizedThreadStart>();
listDelegates.Add(new ParameterizedThreadStart(DelegateEg.Print));
listDelegates.Add(new ParameterizedThreadStart(DelegateEg.Display));
List<WaitHandle> listWaitHandles = new List<WaitHandle>();
foreach (ParameterizedThreadStart t in listDelegates)
listWaitHandles.Add(t.BeginInvoke("In Thread", null, null).AsyncWaitHandle);
WaitHandle.WaitAll(listWaitHandles.ToArray());
Console.WriteLine("All threads executed");
Console.Read();
}
}
public class DelegateEg
{
public static void Print(object obj)
{
Console.WriteLine("In print");
Console.WriteLine(obj);
}
public static void Display(object obj)
{
Console.WriteLine("In Display");
Console.WriteLine(obj);
}
}
спасибо, но я думаю, что я был глупым.paul рыбак прав. Уже работает хорошо. –
да ... я подразумевал одно и то же ... в любом случае это было хорошо r & d для меня :) –