我有一個按鈕單擊事件處理程序與其中的開關案例,它控制一個事件處理程序中的多個按鈕。c#按鈕點擊排隊
我需要使用一個隊列,因爲當單擊一個按鈕並進行一些處理時,第二個按鈕的點擊不會干擾第一個按鈕的點擊,而是添加到隊列中。我不想使用.enabled=false;
,因爲它會完全放棄第二次點擊,而且我目前正在編輯某人的軟件,所以我不想破壞我不知道的事情,那麼您的建議是什麼?
我有一個按鈕單擊事件處理程序與其中的開關案例,它控制一個事件處理程序中的多個按鈕。c#按鈕點擊排隊
我需要使用一個隊列,因爲當單擊一個按鈕並進行一些處理時,第二個按鈕的點擊不會干擾第一個按鈕的點擊,而是添加到隊列中。我不想使用.enabled=false;
,因爲它會完全放棄第二次點擊,而且我目前正在編輯某人的軟件,所以我不想破壞我不知道的事情,那麼您的建議是什麼?
的代碼是成功的:
當然private Queue<Button> Button_Queue = new Queue<Button>();
private bool isProcessing = false;
private void Button_Click((object sender, EventArgs e){
if(isProcessing){
Button_Queue.Enqueue(this);
}
else
{
isProcessing = true;
// code here
isProcessing = false;
while(Button_Queue.Count > 0){
Button_Queue.Dequeue().PerformClick();
}
}
礦是從這個略有不同,因爲我需要通過一些變量和我的點擊方法修改這一點。
如何將它與button_click事件一起使用?我在工作線程方面沒有多少資格,因此任何示例都會很好。 –
這裏可以是一個很好的起點:http://stackoverflow.com/a/5108487/588868。在Windows窗體應用程序中使用線程時遇到的挑戰是避免訪問不在UI線程中的控件屬性。你需要一堆anyControl.InvokeRequired和anyControl.Invoke來在UI線程中執行代碼。 –
基本上,我在想像爲流程設置一個標誌(isProcessing = true/false),並在用戶單擊其中一個按鈕時檢查它,然後如果處理將此按鈕單擊事件添加到隊列中,則在非空時執行隊列。但我需要一種方法來排列button_click。或者將按鈕添加到隊列中,然後調用click事件。我會先嚐試一下。 –
如果事件處理程序在UI線程上運行,則這可能不是必需的。如果每個操作都在同一個線程上處理,那麼第一個操作將阻止所有後續點擊處理。 –