using System.Collections.Generic;
private const int COUNT = 15;
private static List<Anything> m_list;
public delegate void MainDelegate(Anything sender, bool original);
public static void Main()
m_list = new List<Anything>(COUNT);
obj.OnUpdate += new MainDelegate(ThreadMessages);
obj.Test_Function(COUNT);
foreach (var item in m_list)
Console.WriteLine("[Complete]:" + item.Text);
Console.WriteLine("Press any key to exit.");
private static void ThreadMessages(Anything item, bool original)
Console.WriteLine("[main method]:" + item.Text);
public int Number {get; set;}
public string Text {get; set;}
public event MainDelegate OnUpdate;
public void Test_Function(int count)
var list = new List<Thread>(count);
for (var i = 0; i < count; i++)
var thread = new Thread(new ParameterizedThreadStart(Thread_Task));
var item = new Anything()
Text = String.Format("Test_Function #{0}", i)
foreach (var thread in list)
private void MainUpdate(Anything item, bool original)
OnUpdate(item, original);
private void Thread_Task(object parameter)
var item = (Anything)parameter;
item.Text = String.Format("{0}; Thread_Task #{1}", item.Text, item.Number);