我對.NET中的線程技術非常陌生,並且對Java線程的使用有限。總之,我有一個有System.Windows.Forms.Timer
對象的表單。計時器每隔1000ms進行一次滴答。事件處理程序僅檢查bool類變量(即processingResponseFiles)以確定是否正在處理處理請求文件的當前操作。如果沒有進行,它應該處理任何請求文件。否則,它不應該做任何事情。計時器對象和BackgroundWorker
ProcessRequestFiles
方法查看請求,然後運行BackgroundWorker
來執行該工作。我掙扎的問題是,即使我在ProcessingRequestFiles方法的第一條語句中將它分配給true,processingResponseFiles的值始終爲false。有人可以告訴我爲什麼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;
}
你有沒有想過看Singleton或Mutex ..? – MethodMan