0

いくつかの詳細を取り除いた次のコードがあります。

private void bkgdProcessData_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
    bkgdProcessData.ReportProgress(0);

    bool rdPickChecked = false;
    bool rdAutoChecked = true;
    int lbLengthsSelectedIndex = 0;
    string lbLengthsText = "";

    BeginInvoke(new MethodInvoker(() => {
        rdPickChecked = rdPick.Checked;
        rdAutoChecked = rdAuto.Checked;
        lbLengthsSelectedIndex = lbLengths.SelectedIndex;
        lbLengthsText = lbLengths.SelectedItem.ToString();
    }));

    if (rdPickChecked == true && e.Cancel == false)
    {
        if (lbLengthsSelectedIndex < 0)
        {
            ...
        }
        else if (SortedOrderedPieces[0].PieceLength > double.Parse(lbLengthsText))
        {
            ...
        }
        else
            ...
    }
    else if (rdAutoChecked == true && e.Cancel == false)
    {
        ...
    }
}

ご覧のとおり、この手順全体が BackgroundWorker です。MethodInvoke()この手順では、UI 要素にアクセスして変数に書き込むために使用しています。

私の問題は、この手順の最初にブレークポイントを置いてステップ実行すると、変数が正しく設定され、プログラムは正常に動作します、ブレークポイントを削除して実行すると、変数が設定されず、プログラムが動作しません。私はこれについて間違った方法で行っていますか?

4

1 に答える 1