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

C#//如何使几个循环同时工作?,c#,loops,C#,Loops,我已经编写了一年的控制台应用程序,我想是时候开始使用表单了。我真的不知道如何使两个循环同时工作 任何人都可以帮我,给我一个2个循环的例子,一起工作(1从1计数到100,2从100计数到200(两个都在同一时间,假设两个消息框))。我一直在网上寻找这样的短信,但没有成功 我还想知道无限的whiles是否必须是while(5>2),或者是否有更好的方法 提前谢谢 这个 for (int i = 1; i <= 100; i++) { //.. for (int i2 = 100

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

任何人都可以帮我,给我一个2个循环的例子,一起工作(1从1计数到100,2从100计数到200(两个都在同一时间,假设两个消息框))。我一直在网上寻找这样的短信,但没有成功

我还想知道无限的whiles是否必须是while(5>2),或者是否有更好的方法

提前谢谢

这个

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

for(int i=1;i不确定这是否是您对这两个循环的意思


无限循环是指
而(表达式为真)
表达式为
5>2
始终返回真且循环外没有终止,即
返回;
中断;

在设计器视图中的窗体上放置两个标签。然后在代码视图中添加此标签:

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);
    }
}
public Form1()
{
初始化组件();
所示+=新事件处理程序(所示格式1_);
}
所示为void Form1_(对象发送方、事件参数e)
{
对于(int i=1;i
我真的不知道如何使两个循环同时工作

这是一个简单的问题,有一个巨大的答案,但我会尽力为你细分

您在其基本级别描述的问题是“我有两个不同的代码块,它们都以某种方式与用户交互。我想给用户一个印象,这两个代码块同时运行,对用户输入做出平滑响应。”

显然,最简单的方法是编写两个程序。也就是说,让操作系统解决问题。操作系统设法让几十个不同的进程“同时”运行,所有进程(我们希望)都能与用户顺利交互

但是拥有两个进程会带来很高的成本。进程很重,两大块代码之间的通信成本很高。假设您因此希望在同一个程序中拥有这两大块代码。现在您该怎么办

一种方法是将两大块代码分别放在同一进程中各自的线程上。这似乎是个好主意,但它本身也会产生很多问题。现在您必须担心线程安全和死锁以及所有这些问题。不幸的是,只允许一个线程与用户通信。每个表单应用程序都有一个“UI”线程。如果您有两个“工作者”线程运行您的大块代码,那么它们必须使用跨线程通信来与UI线程通信

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

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


有关此新功能的更多信息,请参阅。

对不起,两个循环与表单有什么关系?请不要使用
while(2+2==4)
或者你可能会在1984年遇到一个微妙的错误。不过,更严重的是,这是一个巨大的问题,我建议你在寻求帮助之前自己多做一些实验。与控制台应用程序相比,表单应用程序最重要的一点是,你永远不应该做任何阻碍主(UI)的事情线程或你的应用程序将停止响应。若要并行执行任何长时间运行的操作,你需要使用线程或将工作分解为小块。建议查看BackgroundWorker.yyy,而不是XD:p I ment 2个循环同时(实时)工作。哦,抱歉。我不明白。2个消息框同时更改(实时,假设每1秒一次)(每个循环都在更改每个messagebox);PYes,在这种情况下,poster
ssg
对此解释得很好。我会研究.NET并行编程和事件。当有人说“直接从马嘴里”时,直接从马嘴里作为对埃里克·利珀特回答的评论,一匹马死了……转世为埃里克·利珀特。