SoftwareEngineering2/ConsoleAppLock/ConsoleAppLock/Program.cs

129 lines
2.8 KiB
C#
Raw Normal View History

2019-05-04 09:42:02 +02:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
2019-05-04 10:11:59 +02:00
using System.Threading;
2019-05-04 09:42:02 +02:00
using System.Threading.Tasks;
namespace ConsoleAppLock
{
class Program
{
private static List<int> intlist;
private static object lockobject;
2019-05-04 10:11:59 +02:00
private static ReaderWriterLockSlim rwls;
2019-05-04 09:42:02 +02:00
static void Main(string[] args)
{
2019-05-04 11:25:52 +02:00
foreach (var VARIABLE in getList())
{
Console.WriteLine(VARIABLE);
}
/*
2019-05-04 09:42:02 +02:00
intlist = new List<int>();
lockobject = new object();
2019-05-04 10:11:59 +02:00
rwls = new ReaderWriterLockSlim();
2019-05-04 09:42:02 +02:00
2019-05-04 10:11:59 +02:00
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();
}
2019-05-04 11:25:52 +02:00
*/
Console.Read();
2019-05-04 09:42:02 +02:00
}
2019-05-04 10:11:59 +02:00
static bool containsNumber(int i)
2019-05-04 09:42:02 +02:00
{
2019-05-04 10:11:59 +02:00
bool result = true;
//lock (lockobject)
rwls.EnterReadLock();
2019-05-04 09:42:02 +02:00
{
2019-05-04 10:11:59 +02:00
try
2019-05-04 09:43:19 +02:00
{
2019-05-04 10:11:59 +02:00
if (intlist.Contains(i))
{
result = false;
}
}
finally
{
rwls.ExitReadLock();
2019-05-04 09:43:19 +02:00
}
2019-05-04 09:42:02 +02:00
}
2019-05-04 11:25:52 +02:00
// rwls.ExitReadLock();
2019-05-04 10:11:59 +02:00
return result;
2019-05-04 09:42:02 +02:00
}
static void addNumber(int i)
{
2019-05-04 10:11:59 +02:00
//lock (lockobject)
rwls.EnterWriteLock();
2019-05-04 09:43:19 +02:00
{
2019-05-04 10:11:59 +02:00
intlist.Add(i);
2019-05-04 09:43:19 +02:00
}
2019-05-04 10:11:59 +02:00
rwls.ExitWriteLock();
}
2019-05-04 09:43:19 +02:00
2019-05-04 10:11:59 +02:00
static void printNumbers()
{
Console.Write("Numbers: ");
//lock (lockobject)
rwls.EnterReadLock();
{
foreach (var VARIABLE in intlist)
{
Console.Write(VARIABLE + " ");
}
}
rwls.ExitReadLock();
Console.WriteLine("");
2019-05-04 09:42:02 +02:00
}
2019-05-04 11:25:52 +02:00
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;
}
2019-05-04 09:42:02 +02:00
}
}