【发布时间】:2015-05-11 17:27:45
【问题描述】:
我正在使用 C# 开发 Windows 应用程序,我有一个 for 循环,它在循环中更新某些内容,并且我在名为“停止、暂停、恢复”的表单上有 3 个按钮。所以目的和命名的按钮一样。有人知道怎么做吗?
这是循环
private void btnCompleteAuto_Click(object sender, EventArgs e)
{
setGeneralValue();
for (int i = 1; i <= autoGridView.Rows.Count - 1; i++)
{
if (SRP == "Pause") // this is what I was thinking but it won't work
{ // it will step into end-less loop
do // how to stop this loop on "Resume" button click
{
}while(SRP!="Resume")
}
car = false;
try
{
MemberID = Convert.ToInt64(autoGridView.Rows[0].Cells["Member_ID"].Value);
DispID = Convert.ToString(autoGridView.Rows[0].Cells["Disp_Id"].Value);
Mobile = Convert.ToString(autoGridView.Rows[0].Cells["Mobile"].Value);
DueDate = Convert.ToString(autoGridView.Rows[0].Cells["Due_Date"].Value);
}
catch (Exception)
{
MessageBox.Show("Row Not Found");
}
AutoRecharge(network_name, pack_name, Mobile, Mobile, Convert.ToString(autoGridView.Rows[0].Cells["Rck_Amt"].Value), vendor_id, vendor_pwd, pack_id, oxinetwork_id);
autoGridView.Rows.RemoveAt(0);
}
}
这是我设置变量的 3 个按钮事件
private void btnPause_Click(object sender, EventArgs e)
{
SRP = "Pause";
}
private void btnStop_Click(object sender, EventArgs e)
{
SRP = "Stop";
autoGridView.DataSource = "";
}
private void btnResume_Click(object sender, EventArgs e)
{
SRP = "Resume";
}
【问题讨论】:
-
你做错了。该循环要做的就是在不断全速循环的同时占用大量资源。
-
@Harry:hmm,你有什么建议?
-
阅读状态机。您的 for 循环需要在暂停时保存其状态,然后提前退出循环。然后恢复按钮需要从保存状态开始。状态可以像
i的值一样简单,或者包括任意数量的其他局部变量。如果您想在应用程序的执行过程中保存状态,则需要担心保存类字段,但对于简单的暂停/恢复,这些字段应该已经保持不变。
标签: c#