1

1 つのイベント ハンドラーで複数のボタンを制御する switch ケースを含むボタン クリック イベント ハンドラーがあります。

キューを使用する必要があるのは、1 つのボタンがクリックされて何らかの処理が行われている間、2 番目のボタンのクリックは最初のボタンのクリックに干渉せず、キューに追加されるためです。2回目のクリックを完全に破棄するので使いたくありません.enabled=false;。現在、仕事で誰かのソフトウェアを編集しているので、知らないものを壊したくないので、何を提案していますか?

4

3 に答える 3

1

最良のアイデアは、プロデューサー/コンシューマー キューを作成することだと思います。

別の質問は、この手法を説明することです。

基本的に、アイデアは、キューを消費してジョブを実行するワーカースレッドを作成し、他のスレッドはキューに操作をキューイングすることでジョブを生成することです。

于 2012-06-19T07:34:35.663 に答える
0

System.Collections.Queueでこれを成功させました

コードは次のとおりです。

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();
    }
}

もちろん、いくつかの変数を渡す必要があり、クリックメソッドがこれに合わせて変更されているため、私のものはこれとは少し異なります。

于 2012-06-19T10:27:46.970 に答える