-1

我创建了具有无限循环的 ac 程序。它运行良好。我还创建了具有无限循环的 c# 程序。当表单运行时,后一个程序进程停止响应。为什么两者的行为不同?下面是代码

#include<stdio.h>

int main()
{
    int i;
    for(i=0;i>=10;i++){
        printf("%d",i);
        }
        return 0;
}

c#程序:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{




public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    private void button1_Click(object sender, EventArgs e)
    {
        int i=10;
        while (i > 1)
        {
            //do nothing
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

}

我的问题是这两个程序中的无限循环是如何工作的?

4

1 回答 1

3

您的 C# 程序是一种形式。Windows 期望表单能够处理事件(例如,告诉它关闭),但它不能,因为它处于无限循环中。

如果无限循环在它自己的线程中,或者你编写了一个 C# 控制台应用程序而不是基于表单的应用程序,我认为它的行为更像你的 C。

于 2013-08-08T08:03:24.713 回答