Хотя часть вашего кода сбивает с толку (что с циклом While
?), Я могу сказать, да, Timer
скинет еще один Thread
с ThreadPool
.
Вы можете использовать Monitor
, ReaderWriterLockSlim
или lock
для контроля повторного входа. Вам потребуется объект для блокировки, а другие вещи связаны с вашими требованиями (т. Е. Указанное целое число указывает Monitor
попытаться в течение X миллисекунд, где 0 означает, что мы хотим немедленную блокировку):
VB.NET:
Private ReadOnly LockerObject As Object = New Object()
If (Monitor.TryEnter(LockerObject, 0)) Then
Try
'do your processing
Catch
Finally
'always release the lock
Monitor.Exit(LockerObject)
End Try
End If
C #:
private readonly object LockerObject = new object();
if (Monitor.TryEnter(LockerObject, 0))
{
try
{
//do your processing
}
catch
{
}
finally
{
//always release the lock
Monitor.Exit(LockerObject);
}
}
else
{
//do something else here if needs be.
}
РЕДАКТИРОВАТЬ: Ой, это VB.NET! Позвольте мне преобразовать мой код ...