created FormsAppCache
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ConsoleAppLock
|
||||
@ -10,39 +11,91 @@ namespace ConsoleAppLock
|
||||
{
|
||||
private static List<int> intlist;
|
||||
private static object lockobject;
|
||||
private static ReaderWriterLockSlim rwls;
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
intlist = new List<int>();
|
||||
lockobject = new object();
|
||||
|
||||
containsNumber(5);
|
||||
addNumber(8);
|
||||
rwls = new ReaderWriterLockSlim();
|
||||
|
||||
Console.Read();
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
static void containsNumber(int i)
|
||||
static bool containsNumber(int i)
|
||||
{
|
||||
if (!intlist.Contains(i))
|
||||
bool result = true;
|
||||
//lock (lockobject)
|
||||
rwls.EnterReadLock();
|
||||
{
|
||||
lock (lockobject)
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
if (intlist.Contains(i))
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
rwls.ExitReadLock();
|
||||
}
|
||||
intlist.Add(i);
|
||||
}
|
||||
// rwls.ExitReadLock();
|
||||
return result;
|
||||
}
|
||||
|
||||
static void addNumber(int i)
|
||||
{
|
||||
|
||||
lock (lockobject)
|
||||
//lock (lockobject)
|
||||
rwls.EnterWriteLock();
|
||||
{
|
||||
|
||||
intlist.Add(i);
|
||||
}
|
||||
rwls.ExitWriteLock();
|
||||
}
|
||||
|
||||
intlist.Add(i);
|
||||
|
||||
static void printNumbers()
|
||||
{
|
||||
Console.Write("Numbers: ");
|
||||
|
||||
//lock (lockobject)
|
||||
rwls.EnterReadLock();
|
||||
{
|
||||
foreach (var VARIABLE in intlist)
|
||||
{
|
||||
Console.Write(VARIABLE + " ");
|
||||
}
|
||||
}
|
||||
rwls.ExitReadLock();
|
||||
Console.WriteLine("");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user