"错误创建窗口句柄"同时创建多个表单

时间:2017-01-19 09:55:44

标签: c# multithreading winforms handles window-handles

我正在异步创建一些带有许多控件的窗体(每个窗口都在一个创建的线程上,用于打开该窗体)。

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

我总是收到此错误&#34;错误创建窗口句柄&#34;。我试着谷歌搜索限制是10.000句柄。但是,我有另一个线程来检查这样的句柄数量:

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

最大打印出800,这远远不是极限。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

我认为图形操作必须在主线程中完成。我本来希望你的代码崩溃得更快。您是否尝试在主线程中运行它以查看可以创建多少个窗口?