BackGroundWorker后台多线程问题
public class Program
{
#region BackGroundWorker
public static int gloable = 0;
public static List<BackgroundWorker> bws = new List<BackgroundWorker>();
static void Main(string[] args)
{
Console.WriteLine("---BackGroundWorker Begin---");
for (int i = 1; i <= 10; i++)
{
Events(i);
}
Console.WriteLine("---BackGroundWorker End---");
Console.ReadKey();
}
public static void Events(int num)
{
try
{
using (BackgroundWorker BackHandler = new BackgroundWorker())
{
if (num != 3)
{
Thread.Sleep(500);
}
else
{
Thread.Sleep(1500);
}
BackHandler.DoWork += new DoWorkEventHandler(Send);
BackHandler.RunWorkerAsync(100);
bws.Add(BackHandler);
BackHandler.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ThreadOver);
}
}
catch
{
Console.WriteLine("BackGroundWorkerError!");
}
}
public static void Send(object obj, DoWorkEventArgs e)
{
BackgroundWorker bg = obj as BackgroundWorker;
int Num = (int)e.Argument;
for (int i = 1; i <= Num; i++)
{
Console.WriteLine("---BackGroundWorker" + i + "---");
}
}
public static void ThreadOver(object sender, RunWorkerCompletedEventArgs e)
{
BackgroundWorker bg = sender as BackgroundWorker;
bws.Remove(sender as BackgroundWorker);
gloable = gloable + 1;
Console.WriteLine("BackGroundWorker!---" + gloable + "---end");
bg.Dispose();
}
#endregion
}
后台异步线程的效果是有了,但是没有体现出多线程的效果!Events处的我让一个num为3的时候多sleep一会