1

在我的 program.cs 文件中,代码如下:

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    frmWizard frm = new frmWizard();
    Application.Run(frm);

    Thread th = new Thread(frm.ThreadSetCom);
    th.Start();
}

ThreadSetCom 是一种在无限循环中运行以检查某些内容的方法。我注意到 ThreadSetCom 只会在 WinForm 出现之前和我关闭表单之后执行。当表单可见时它不会执行。谁能帮我解决这个问题?

4

2 回答 2

2

Application.Run 等到参数中传递的表单关闭。如果出现frmWizard,create您可能需要这样做。startthreadload

private void frmWizard_Load(object sender, System.EventArgs e)
{
    Thread th = new Thread(ThreadSetCom);
    th.Start(); 
}
于 2012-12-08T04:46:42.677 回答
1

Application.Run 将阻塞,直到您关闭解释您看到此行为的原因的表单。Adil 的回答会起作用,但我相信你不应该以这种方式耦合你的代码。如果您的 Main 方法独立于 Form Load 事件启动第二个线程会更好。

所以你只需要像这样重新排列你的代码:

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    frmWizard frm = new frmWizard();

    Thread th = new Thread(frm.ThreadSetCom);
    th.Start();

    Application.Run(frm);
}
于 2012-12-09T11:21:13.370 回答