Я очень новичок в потоковом режиме в .NET и ограниченное использование потоков в Java. Короче говоря, у меня есть форма, которая имеет объект System.Windows.Forms.Timer
. Таймер тикает каждые 1000 мс. Обработчик событий просто проверяет переменную класса bool (то есть обрабатываетResponseFiles), чтобы определить, выполняется ли текущая операция обработки файлов запроса. Если не выполняется, он должен обрабатывать любые файлы запросов. В противном случае он ничего не должен делать.Timer Object and BackgroundWorker
Метод ProcessRequestFiles
рассматривает запрос, а затем выполняет BackgroundWorker
для выполнения работы. Проблема, с которой я борюсь, заключается в том, что значение обработкиResponseFiles всегда ложно, хотя я назначаю его true в первом выражении метода ProcessingRequestFiles. Может кто-то, пожалуйста, скажите мне, почему значение обработкиResponseFiles всегда ложно, хотя я устанавливаю его в методе ProcessRequestFile()
?
Мне нужно защитить этот метод, чтобы он не выполнялся более одного раза.
private void timerRequestTimer_Tick(object sender, EventArgs e)
{
if (!processingResponseFiles)
{
ProcessRequestFile();
}
private void ProcessRequestFile()
{
processingResponseFiles = true;
// Process Request Files
// If request type is Synchronize Customers
// Run thread that synchronizes customers
// If request type is Synchronize Items
// Run thread that synchronizes items
processingResponseFiles = false;
}
Вы задумывались над тем, чтобы смотреть на Singleton или Mutex ..? – MethodMan