SoftwareEngineering2/ConsoleAppLock/ConsoleAppLock/Program.cs

129 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleAppLock
{
class Program
{
private static List<int> intlist;
private static object lockobject;
private static ReaderWriterLockSlim rwls;
static void Main(string[] args)
{
foreach (var VARIABLE in getList())
{
Console.WriteLine(VARIABLE);
}
/*
intlist = new List<int>();
lockobject = new object();
rwls = new ReaderWriterLockSlim();
while (true)
{
int intTemp;
try
{
intTemp = Convert.ToInt32(Console.ReadLine());
}
catch (Exception e)
{
continue;
}
if (containsNumber(intTemp))
{
Console.WriteLine("Add");
addNumber(intTemp);
}
else
{
Console.WriteLine("Not Added");
}
printNumbers();
}
*/
Console.Read();
}
static bool containsNumber(int i)
{
bool result = true;
//lock (lockobject)
rwls.EnterReadLock();
{
try
{
if (intlist.Contains(i))
{
result = false;
}
}
finally
{
rwls.ExitReadLock();
}
}
// rwls.ExitReadLock();
return result;
}
static void addNumber(int i)
{
//lock (lockobject)
rwls.EnterWriteLock();
{
intlist.Add(i);
}
rwls.ExitWriteLock();
}
static void printNumbers()
{
Console.Write("Numbers: ");
//lock (lockobject)
rwls.EnterReadLock();
{
foreach (var VARIABLE in intlist)
{
Console.Write(VARIABLE + " ");
}
}
rwls.ExitReadLock();
Console.WriteLine("");
}
static IEnumerable<string> getList()
{
// List<int> intlist = new List<int>();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("generate List");
//intlist.Add(i);
yield return i.ToString();
}
Console.WriteLine("finished");
//return intlist;
}
}
}