我对 .NET 中的线程非常陌生,并且对 Java 中的线程的接触有限。简而言之,我有一个有System.Windows.Forms.Timer
对象的表单。计时器每 1000 毫秒计时一次。事件处理程序仅检查布尔类变量(即 processingResponseFiles)以确定处理请求文件的当前操作是否正在进行中。如果不在进行中,它应该处理任何请求文件。否则,它应该什么都不做。
该ProcessRequestFiles
方法查看请求,然后运行 aBackgroundWorker
来执行工作。我正在努力解决的问题是 processingResponseFiles 的值始终为 false,即使我在 ProcessingRequestFiles 方法的第一条语句中将其分配为 true。有人可以告诉我为什么 processingResponseFiles 的值总是假的,即使我在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;
}