2009-10-16 6 views
-1

난 내 Form1에이 Form2를 열고 다른 형식이 반환 정보 후에 Form2로 데이터를 전송하기 때문에 콜백과 prioblem이 ...C# 콜백 문제

내가 Form2를에 유치원 1에서 객체를 보낼 수 있습니다 도움이되지만하십시오 form2 메소드의 결과는 다른 양식 (예제 양식 3)에 대한 콜백에 의해 리턴되어야합니다.

난 당신이 내 질문을 이해 바랍니다 ..

+0

당신이 원하는 것을 말하기가 어렵습니다. 몇 가지 코드를 게시하고 문제를 파악할 수 있습니까? –

+2

조금 더 많은 정보가 도움이 될 것입니다 ... 문제가 있습니까? 아니면 어떻게 할 수 있는지 알아야합니까? – Bobby

+0

코드 샘플을 게시 할 수 있습니까? 당신은'Form2'에서'Form1'으로 또는 그 반대로, 또는 그 둘 다 또는 다른 양식으로 데이터를 전적으로 보내고 있습니까? – Donut

답변

1

동일한 데이터에서 작동하는 여러 양식을 사용한다는 사실은 양식에 정보를 전달하고 저장소의 변경 사항을 모두 처리 할 수있는 "모델"클래스 집합에 해당 데이터를 캡슐화하는 것이 더 좋습니다 필요에 따라

이점은 동일한 데이터를 처리해야하는 여러 양식이있는 경우 변경 알림을 위해 모델 개체에 콜백을 게시 할 수 있다는 것입니다. 각 양식은 관심있는 모델의 이벤트를 구독하며 모든 양식이 모델을 조작 할 수 있고 모든 양식이 알림에 대응하여 현재 상태를 유지할 수 있음을 의미합니다.

언제 이런 식으로 데이터를 조작하는 양식이 마음에 들지 않으며 새 양식을 시작할 때 모델 클래스 이상을 전달할 필요가 없습니다. 마찬가지로 양식에서 저장을 요청하면 모든 양식에서 보류중인 변경 사항을 표시하지 않도록 상태를 업데이트 할 수 있습니다.

0

여러 형태의 사이에 데이터를 전달, 자사의 refernceto에게 양식의 생성자에 의해서만 채워 형태 내에서 private 변수와 같은 다른 형태를 저장하는 것이 유용.

그러나 메모리 문제, 특히 이벤트가 여전히 다른 양식의 메모리에 보유 된 양식에 유선되어있는 경우 특히주의해야합니다.

+0

폼 메서드가 다른 스레드에서 실행되는 경우 잠금 및 동기화 문제가 발생할 수도 있습니다. –

0

아마도 Form3에서 Form2의 FormClosed 이벤트를 수신 한 다음 Form2의 반환 데이터를 요청할 수있는 코드가있을 수 있습니다. 또는 Form2에서 FormClosedWithReturnValue (개체 보낸 사람, SomeArgsThatContainsReturnData 데이터)를 만들고 이벤트를 만들고 Form3에서 해당 이벤트를 수신하도록 할 수 있습니다. 희망이 도움이됩니다.