2017-01-19 6 views
0

多くのコントロールを非同期的に(いくつかのフォームを開く目的で作成されたスレッドごとに)いくつか作成します。複数のフォームを作成する際に "ウィンドウハンドルを作成中にエラーが発生する"

for(var i = 0; i < 10; i++) 
{ 
    var thread = new Thread(() => 
    { 
     var form = new FormX(); 
     form.ShowDialog(); 
    }); 
    thread.Start(); 
} 

私はいつもこのエラー「ウィンドウハンドルの作成中のエラー」を受け取ります。私は限界が10.000のハンドルであることをグーグルで試しました。最大で

var handleThread = new Thread(() => 
{ 
    while(true) 
    { 
     System.Diagnostics.Debug.WriteLine(System.Diagnostics.Process.GetCurrentProcess().HandleCount); 
    } 
}); 
handleThread.Start(); 

それは800のように出力し、限界に近いどこにもありません。しかし、私はこのようなハンドルの量をチェックする別のスレッドを持っています。

何が問題なのですか?

+2

**デフォルト**の上限は10,000です。実際の制限を確認しましたか?また、これはユーザーオブジェクトの最大数に関連している可能性があります。 –

+0

1.制限のアプリケーション設定を確認するにはどうすればよいですか? 2.ユーザーオブジェクトの金額を確認するにはどうすればよいですか? –

+0

[this](https://blogs.technet.microsoft.com/markrussinovich/2009/09/29/pushing-the-limits-of-windows-handles/)と[that](https:// msdn。 microsoft.com/en-us/library/windows/desktop/ms725486(v=vs.85).aspx)。 –

答えて

0

私は、グラフィカルな操作がメインスレッドで行われなければならないと考えました。あなたのコードがはるかに速くクラッシュすると思います。メインスレッドでそれを実行して、作成できるウィンドウの数を確認しましたか?

+0

私はたくさんのフォームをすばやく作成する必要があります。彼らはロードに数秒かかる、私は本当に彼らが正常に読み込まれるかどうかをテストされているように表示する気にしない - 私は直後にそれらを閉じます。 –

関連する問題