60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Threading;
|
|
|
|
namespace Background_Worker_Testing
|
|
{
|
|
class worker
|
|
{
|
|
public void do_Work()
|
|
{
|
|
while (_ThreadActive)
|
|
{
|
|
Console.WriteLine("Thread Processing with ID " + id);
|
|
System.Threading.Thread.Sleep(id * 755);
|
|
}
|
|
}
|
|
public void request_Stop()
|
|
{
|
|
_ThreadActive = false;
|
|
}
|
|
private volatile bool _ThreadActive = true;
|
|
public volatile int id;
|
|
}
|
|
|
|
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
Console.WriteLine("Program Started.");
|
|
worker worker1 = new worker();
|
|
worker worker2 = new worker();
|
|
worker1.id = 1;
|
|
worker2.id = 2;
|
|
Console.WriteLine("Workers defined.");
|
|
Thread thread1 = new Thread(worker1.do_Work);
|
|
Thread thread2 = new Thread(worker2.do_Work);
|
|
Console.WriteLine("Threads Defined");
|
|
thread1.Start();
|
|
while (!thread1.IsAlive);
|
|
Console.WriteLine("Thread 1 has begun!");
|
|
thread2.Start();
|
|
while (!thread2.IsAlive);
|
|
Console.WriteLine("Thread 2 has begun!");
|
|
|
|
System.Threading.Thread.Sleep(5000);
|
|
Console.WriteLine("Stopping Threads...");
|
|
worker1.request_Stop();
|
|
while (thread1.IsAlive);
|
|
worker2.request_Stop();
|
|
while (thread2.IsAlive);
|
|
Console.WriteLine("Threads Stopped.");
|
|
Console.ReadKey();
|
|
|
|
}
|
|
}
|
|
}
|