using System.Collections.Generic;
using System.Windows;
using System.Threading;
namespace FYSTest
{
public
partial
class
MainWindow : Window
{
List<
int
> list =
new
List<
int
>();
private
ReaderWriterLock _rwlock =
new
ReaderWriterLock();
public
MainWindow()
{
InitializeComponent();
Thread ThRead =
new
Thread(
new
ThreadStart(Read));
ThRead.IsBackground =
true
;
Thread ThRead2 =
new
Thread(
new
ThreadStart(Read));
ThRead2.IsBackground =
true
;
Thread ThWrite =
new
Thread(
new
ThreadStart(Write));
ThWrite.IsBackground =
true
;
ThRead.Start();
ThRead2.Start();
ThWrite.Start();
}
private
void
Read()
{
while
(
true
)
{
_rwlock.AcquireReaderLock(
100
);
try
{
if
(list.Count >
0
)
{
int
result = list[list.Count -
1
];
}
}
finally
{
_rwlock.ReleaseReaderLock();
}
}
}
int
WriteCount =
0
;
private
void
Write()
{
while
(
true
)
{
_rwlock.AcquireWriterLock(
100
);
try
{
list.Add(WriteCount++);
}
finally
{
_rwlock.ReleaseWriterLock();
}
}
}
}
}
</
int
></
int
>