如何返回“if”;在if循环中

本文关键字:if 循环 何返回 返回 | 更新日期: 2023-09-27 17:53:21

大家好,实际上我首先想做这个循环。

Process p = Process.GetProcessesByName("etcProgram.bin")[0];
                foreach (System.Diagnostics.ProcessModule moz in p.Modules)
                    if (csh.Text == "csh" || bin.Text == "bin")
                    {
                        if (moz.FileName.IndexOf("csh") != -1)
                        {
                            csh.Text = moz.BaseAddress.ToString();
                        }
                        if (moz.FileName.IndexOf("bin") != -1)
                        {
                            bin.Text = moz.BaseAddress.ToString();
                        }
                    }
                else
                    {
                      !!!!!! return to "if" until "if code" happens !!!!!!
                    }

但是我可怜的代码知识无法解决这个问题。所以我用定时器写了几乎相同的东西。然后我写了这段代码。

 private void tmrActive_Tick(object sender, EventArgs e)
        {
            try
            {
                Process p = Process.GetProcessesByName("Wolfteam.bin")[0];
                foreach (System.Diagnostics.ProcessModule moz in p.Modules)
                    if (csh.Text == "csh" || bin.Text == "bin")
                    {
                        if (moz.FileName.IndexOf("csh") != -1)
                        {
                            csh.Text = moz.BaseAddress.ToString();
                        }
                        if (moz.FileName.IndexOf("bin") != -1)
                        {
                            bin.Text = moz.BaseAddress.ToString();
                        }
                    }
                else
                    {
                        tmrActive.Stop();
                        MessageBox.Show("It's stopped");
                    }
            }

但是我看到MessageBox出现5-6次,当我开始这个。我不知道为什么。所以我觉得使用这个代码不是很安全。

你知道那个计时器有什么问题吗?这个消息框不应该出现一次吗?

2-你能帮我做一下没有定时器的代码吗?有办法吗?

如何返回“if”;在if循环中

你的意思是…

foreach (System.Diagnostics.ProcessModule moz in p.Modules)
{
    bool breakloop = false;
    while (!breakloop)
    {
        if (csh.Text == "csh" || bin.Text == "bin")
        {
            if (moz.FileName.IndexOf("csh") != -1)
                csh.Text = moz.BaseAddress.ToString();
            if (moz.FileName.IndexOf("bin") != -1)
                bin.Text = moz.BaseAddress.ToString();
            breakloop = true;
        }
    }
}

您可以简单地使用break语句来停止循环。

foreach (System.Diagnostics.ProcessModule moz in p.Modules)
{
    if (csh.Text == "csh" || bin.Text == "bin")
    {
         if (moz.FileName.IndexOf("csh") != -1)
         {
              csh.Text = moz.BaseAddress.ToString();
         }
         if (moz.FileName.IndexOf("bin") != -1)
         {
              bin.Text = moz.BaseAddress.ToString();
         }
         break;
     }
}

您可以将整个代码用作带有特定条件的递归函数,以便在需要时停止条件,如

foreach (System.Diagnostics.ProcessModule moz in p.Modules) { looping () {

bool breakloop = false;
while (!breakloop)
{
    if (csh.Text == "csh" || bin.Text == "bin")
    {
        if (moz.FileName.IndexOf("csh") != -1)
            csh.Text = moz.BaseAddress.ToString();
        if (moz.FileName.IndexOf("bin") != -1)
            bin.Text = moz.BaseAddress.ToString();
        breakloop = true;
        looping();
    }
}