C#//如何让几个循环同时工作?

时间:2012-01-23 18:53:11

标签: c# loops

我已经编程了一年的控制台应用程序,我认为是时候开始使用表单了。我真的不知道如何让2个循环同时工作。

any1能帮助我并给我一个2循环的例子,一起工作(1从1到100计数,第2计数从100到200(同时,两个消息框))。我一直在网上寻找类似的东西,但没有成功。

我也想知道无限时间是否必须像(5> 2)那样,或者如果有更好的方法可以做到这一点。

提前致谢!

4 个答案:

答案 0 :(得分:12)

  

我真的不知道如何让2个循环同时工作。

这是一个带有巨大答案的简单问题,但我会尝试为你分解。

你在基本层面上描述的问题是“我有两种不同的代码,它们都以某种方式与用户交互。我想给用户一种印象,即两个代码都运行在同时,顺利回应用户输入。“

显然,最简单的方法是编写两个程序。也就是说,使操作系统解决问题。操作系统以某种方式设法在“同时”运行许多不同的进程,所有进程都与用户平滑地(我们希望)进行交互。

但是有两个过程会带来很高的成本。进程是重量级的,并且两个代码之间相互通信的代价很高。假设您希望在同一个程序中拥有两个代码 。那你现在做什么?

一种方法是在同一进程中将两个代码各自放在自己的线程上。这似乎是一个好主意,但它产生了很多自己的问题。现在你必须担心线程安全和死锁以及所有这些。而且,遗憾的是,只允许一个线程与用户进行通信。每个表单应用程序都有一个“UI”线程。如果你有两个“工作”线程运行你的代码,他们必须使用跨线程通信与UI线程进行通信。

另一种方法是将每一段代码分解成小块,然后在UI线程上按顺序安排所有部分。调度程序可以优先考虑用户交互,任何特定的小工作都不会阻塞并使UI线程无响应。

这是我建议你探索的最后一种技术。我们在C#5中做了很多工作,以便更容易编写这种风格的程序。

有关此新功能的详情,请参阅http://msdn.microsoft.com/en-us/async

答案 1 :(得分:0)

不确定这是否就两个循环的意思。

无限循环是指while (expression is true)表达式为5>2的{​​{1}}始终返回true并且没有终止循环的任何内容,即return;break;

答案 2 :(得分:0)

在Designer视图中删除表单上的两个标签。然后在代码视图中添加它:

public Form1()
{
    InitializeComponent();
    Shown += new EventHandler(Form1_Shown);
}

void Form1_Shown(object sender, EventArgs e)
{
    for (int i = 1; i <= 100; i++)
    {
        label1.Text = i.ToString();

        // "Second loop"
        label2.Text = (i + 100).ToString();

        Update();
        System.Threading.Thread.Sleep(10);
    }
}

你会同时得到两个数字。一个从1-100。另一个来自101-200。

答案 3 :(得分:-1)

此?

for (int i = 1; i <= 100; i++)
{
    //..
    for (int i2 = 100; i2 <= 200; i2++)
    {
        //..
    }
}