0

メソッドのループがまだ機能している間に、値を動的に割り当ててフォーム上で更新するにはどうすればよいですか? 私のプログラムで何が起こるかというと、起動すると終了するまでハングし (数独の解決策が見つかる)、テキストボックスにデータが入力されます。主な方法は次のとおりです。

            bool SolveSudoku()
    {
        if (!FindUnassignedLocation()) return true;
        for (int num = 1; num <= 9; num++)
        {
            if (NoConflicts(emptyRow, emptyCol, num))
            {
                Grid[emptyRow, emptyCol].Text = num.ToString();
                Grid[emptyRow, emptyCol].BackColor = Color.White;
                Grid[emptyRow, emptyCol].ForeColor = Color.Black;
                if (SolveSudoku()) return true;
                Grid[emptyRow, emptyCol].Text = "";   
            }
        }
        bool checkIfFirstBackTrack = true;
        do {
            if (checkIfFirstBackTrack)
            {
                backtrackCounter++;
                checkIfFirstBackTrack = false;
            }
            if (emptyCol == 0 && emptyRow > 0)
            {
                emptyCol = 8;
                emptyRow--;
            }
            else if (emptyCol > 0)
            {
                emptyCol--;
            }
        }
        while(Preset[emptyRow, emptyCol] != "");

        return false;
    }
    }
4

1 に答える 1

1

1 つのオプションは、バックグラウンド ワーカーです。バックグラウンド ワーカーの設定の詳細については、こちらを参照してください。:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    BackgroundWorker worker = sender as BackgroundWorker;

    for (int i = 1; i <= 10; i++)
    {
        if (worker.CancellationPending == true)
        {
            e.Cancel = true;
            break;
        }
        else
        {
            //// your code here
        }
    }
}
于 2013-06-26T18:51:23.300 に答える