Вы должны выполнять работу в несколько потоков. Попробуйте это:
class Program
{
static bool isRunning = true;
static void Main(string[] args)
{
BackgroundWorker bw1 = new BackgroundWorker();
BackgroundWorker bw2 = new BackgroundWorker();
bw1.DoWork += delegate(object sender, DoWorkEventArgs e)
{ while (isRunning) { } };
bw2.DoWork += delegate(object sender, DoWorkEventArgs e)
{ while (isRunning) { } };
bw1.RunWorkerAsync();
bw2.RunWorkerAsync();
Console.ReadLine();
isRunning = false;
}
}
Вы можете увеличить количество фоновых рабочих в зависимости от того, сколько у вас ядер (в этом примере мой двухъядерный компьютер работает максимально эффективно). Вы можете поместить свой код после запуска рабочих, а затем остановить их, изменив значение isRunning.