我在Windows 10上使用Visual Studio C#2010。
编辑:我的目标是创建一个中止按钮,允许我使用UI取消循环。
我正在使用我在网上找到的与this类似的示例: 这是代码:
public void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
e.Result = "";
for (int i = 0; i < 100; i++)
{
System.Threading.Thread.Sleep(50); //do some intense task here.
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
}
}
(有一些代码共享日期/时间但我删除了它,因为它对基本示例来说是多余的。)
我是如何理解这段代码的,100次,代码暂停主线程并处理“一些紧张的任务”50ms。是这种情况吗?
如果是这样,我想我遇到了一个问题。我有我要运行的代码:
private void btn_runtest_Click(object sender, EventArgs e)
{
// Exterior Platform Loop
Output.AppendText("Starting Test \n");
for (int i = 0; i <= 3200; i += 178)
{
// Interior Platform Loop
for (int ii = 0; i <= 6400; ii += 178)
{
comport7_interior.Write("@1N178\r"); //change to have actual length?
comport7_interior.Write("@1G\r");
Output.AppendText("Interior shift 5 degrees \n");
Thread.Sleep(4000);
// ***********************************************************************************
// Read data from comport2_lightsensor, Parse byte, store Lux value, store angle (i,ii)
// ***********************************************************************************
}
comport8_exterior.Write("@0N178\r");
comport8_exterior.Write("@0G\r");
Output.AppendText("Exterior shift 5 degrees \n");
Thread.Sleep(4000);
//flip direction for internal
if (IsOdd(jjj))
{
//
comport7_interior.Write("@1-\r");
Output.AppendText("Interior switching direction to counter clockwise \n");
}
else
{
comport7_interior.Write("@1+\r");
Output.AppendText("Interior switching direction to clockwise \n");
}
jjj = jjj + 1;
// ***********************************************************************************
// Read data from compart2_lightsensor, Parse byte, store Lux value, store angle (i,ii)
// ***********************************************************************************
}
Output.AppendText("Loop Ended");
// manually reverse mount direction
// repeat the whole double for loop
}
这是非常“胖”的代码,总而言之,它控制两个步进电机,旋转它们以遵循所需的路径,暂停4秒,并最终记录数据。我们可以做确切的数学,但只是估计我们可以实现这段代码需要1-2个小时。所有这些暂停,似乎有利于分开处理100个小块(如果我对前面提到的代码的理解是正确的)。 纠正我我错了,但我不认为这段代码符合上述代码。
这是否意味着我在看错了方法?
提前谢谢大家。