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:41:48 +02:00
Task t = Task . Run ( ( ) = >
{
int i = 5 ;
int b = 2 * i ;
Console . WriteLine ( "Result: " + b ) ;
}
) ;
// t.Start(); //geht net nochmals
foreach ( var item in getList ( ) )
2019-05-04 11:25:52 +02:00
{
2019-05-04 11:41:48 +02:00
Console . WriteLine ( item ) ;
2019-05-04 11:25:52 +02:00
}
/ *
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 ( )
{
2019-05-04 11:41:48 +02:00
Console . WriteLine ( "started" ) ;
// List<int> intlist = new List<int>();
2019-05-04 11:25:52 +02:00
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
}
}