나는 창 핸들이 만들어 질 때까지 호출 또는 BeginInvoke는 컨트롤을 호출 할 수 없습니다 다음과 같은 런타임 오류 메시지어떻게 C#
을 얻고에서 핸들의 WinForm의 생성을 강제 않습니다.
여기 내가 계속하고 있다고 생각합니다. 내 winform 생성자가 비동기 TCP/IP 데이터를받은 객체를 만드는 중입니다. 짧은 이야기를하기 위해 네트워크 데이터를받는 클래스가 텍스트 상자에 데이터를 인쇄하기 위해 Winform에서 루틴을 호출 할 수있게하는 이벤트 대리자가 있습니다. 이것은 내가받은 것을 볼 수있게 해줍니다. 데이터가 즉시 수신되는 것을 볼 수 있습니다. 이것은 winform 생성자가 끝나기 전에 발생합니다.
나는 핸들이 생성 될 때까지 winform 또는 winform 구성 요소를 읽을 수 없습니다. 나는 이것이 내가 위반하는 것으로 의심한다. 이 기능을 강요하는 기능이 있다고 가정합니다. TCP/IP 데이터를받는 클래스를 만들기 전에 강제로 만들기 위해 winform 생성자에 다음 코드를 추가해 보았습니다. 그러나 오류가 남아 있습니다. 그러나 나는 객체 핸들 생성을 확인하고 그 경우에 전화를 피하는 방법이 내가 실현
public void Print_Console_Message(string message)
{
Console_Output.Enqueue(message);
this.Invoke(new EventHandler(PrintToConsole));
}
private void PrintToConsole(object sender, EventArgs e)
{
string message = Console_Output.Dequeue();
if (message.Length != 0)
{
HistoryBox.AppendText(message + "\n" + "\n");
}
}
: 여기
InitializeComponent();
this.CreateControl();
this.HistoryBox.CreateControl();
은 도움이 경우 제의 WinForm 대리인 코드입니다 단순히 출력의 일부를 억제하는 데 관심이 없습니다.
누구나 생성자가 끝나기 전에 대리자 함수를 호출 할 수 있도록 핸들 또는 컨트롤 만들기를 강제 할 수있는 방법을 알고 있습니까?
호출을 필요로하는 개체의 생성을 ['Load'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.load%28v)로 옮길 수 있습니까? = vs.110 % 29.aspx) 이벤트 대신 생성자가 필요합니까? 'Load' 이벤트는 핸들이 생성 된 후에 발생하며 이와 같은 상황에 좋습니다. –