1
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
saviour-backup-system/Snippets/background Worker.cs

61 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();
}
}
}