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 イベントとは独立して 2 番目のスレッドを開始した方がよいでしょう。

したがって、次のようにコードを再配置する必要があります。

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 に答える