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

많은 서식을 빠르게 작성해야합니다. 로드에 몇 초가 걸립니다. 성공적으로로드되는지 여부에 관계없이 테스트가 표시되기 때문에 실제로 나타나지 않습니다. 바로 그 후에 닫습니다. –

관련 문제