我有以下代码,其中删除了一些细节:
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 元素并将它们写入此过程中的变量。
我的问题是,当我在此过程的开头放置一个断点并逐步执行它时,它会正确设置变量并且程序运行正常,但是如果我删除断点并运行它,变量不会设置并且我的程序不起作用。我会以错误的方式解决这个问题吗?