2011-05-09 4 views
3

2 개의 백그라운드 스레드를 시작하고 싶습니다. 한 스레드는 클라이언트의 서버 역할을하고 다른 스레드는 서버의 클라이언트 역할을합니다. 이 응용 프로그램은 서버 및 클라이언트 응용 프로그램입니다. Application.Run()을 호출하기 전에 Main() 함수에서 이러한 스레드를 시작해야합니까? 아니면 기본 폼이로드 된 후 만들어야합니까? UI와 비즈니스 로직을 서로 분리하려고 노력하고 있지만이 스레드가 이벤트를 폼에 알릴 필요가 있다는 것을 알고 있습니다. 이것에 가장 적합한 코딩 방법은 무엇입니까? 감사!C# WinForms 응용 프로그램에서 백그라운드 스레드를 시작할 적절한 위치는 어디입니까?

답변

1

기본 폼에서 논리를 수행해야하는 경우 기본 폼이 작성된 스레드에서 실행하는 논리가 필요합니다. 따라서 클라이언트와 서버 모두 기본 폼에 대한 참조가 필요하므로 기본 폼의 코드가 동기식인지 비동기식인지에 따라 Invoke 또는 BeginInvoke를 호출 할 수 있습니다. 따라서 클라이언트와 서버에 대한 참조를 전달할 수 있도록 기본 폼이로드 된 후 스레드를 시작해야합니다.

+0

그렇다면 비즈니스 로직 클래스 전체에서 기본 폼에 대한 참조를 전달해야한다는 의미입니까? – Andrew

+0

기본 폼에서 코드를 호출해야하는 곳에서만. 대체적인 접근 방식은 모든 비즈니스 로직에 대한 참조 또는 정적 클래스가있는 일부 글로벌 클래스에 의해 노출되는 기본 폼을 갖는 것입니다. 이 경우'Main()'메쏘드에서 쓰래드를 생성 할 수 있습니다. 기본 폼을 노출하는 속성이나 메서드가 어떤 코드를 호출하기 전에 null을 반환하지 않는지 확인하기 만하면됩니다. 또한 코드를 호출하기 전에 항상 양식이 삭제되지 않았는지 확인해야합니다. –

+0

기본 폼을 포함하는 전역 클래스를 설정하는 방법은 무엇입니까? – Andrew

0

UI를 만들기 전에 Main()에서 시작하십시오.

관련 문제