이런 종류의 문제에 대해 몇 가지 논쟁이 있음을 알고 있습니다. 어쨌든 WCF 서비스에서 반환 된 열거 형을 기반으로 ComboBox 항목을 채워야하는 몇 가지 사례가 있습니다.실버 라이트 비동기 호출과 익명 메소드
코드를 깨끗하게 유지하기 위해이 접근 방식을 시작했습니다. 더 자세히 살펴본 결과, 처음에는이 코드가 잘 작동하지 않는다고 생각합니다.
나는이 방법이나 현재 수행중인 작업에 대한 권장 사항/조언/코드 스 니펫을 얻기 위해이 코드를 던지고 있습니다. 이.
나는 익명의 방법이 아닌 별도의 절차가 있어야 할 수도 있습니다. 나는 ... 또 다른 방법으로 작업이 표시되지 않습니다, 이런하지만 순간에 뭔가를이 일을 싫어 우리는 그래서 우리는 다음에서 EV를 사용할 수있는 익명 메소드를 개최 EV를 사용하여이 예에서는 기본적으로
EventHandler<GetEnumerationsForTypeCompletedEventArgs> ev = delegate(object eventSender, GetEnumerationsForTypeCompletedEventArgs eventArgs)
{
if (eventArgs.Error == null)
{
//comboBox.ItemsSource = eventArgs.Result;
//populate combox for display purposes (for now)
foreach (Enumeration e in eventArgs.Result)
{
ComboBoxItem cbi = new ComboBoxItem();
cbi.Content = e.EnumerationValueDisplayed;
comboBox.Items.Add(cbi);
}
// remove event so we don't keep adding new events each time we need an enumeration
proxy.GetEnumerationsForTypeCompleted -= ev;
}
};
proxy.GetEnumerationsForTypeCompleted += ev;
proxy.GetEnumerationsForTypeAsync(sEnumerationType);
호출 된 이벤트에서 이벤트를 제거하는 메소드. 이렇게하면이 메서드가 두 번 이상 호출되지 않습니다.
이 호출 이전에 선언 된 ComboBox 로컬 변수가 동일한 메서드 내에서 항상 ComboBox가 아니지만 실제로는 확인할 수 없다고 생각됩니다. 일부 테스트를 수행하고 확인을 위해 태그를 추가 할 수 있습니다.
죄송합니다. 명확하지 않으면 죄송합니다. 필요한 경우 더 자세히 설명 할 수 있습니다.
감사합니다.
문제는 무엇입니까? 항목이 ComboBox에 추가되지 않았습니까? – Andy
자세히 설명해주십시오. 어떤 문제가 발생했는지는 명확하지 않습니다. 전체 메소드를 포함하도록 코드 샘플을 확장하면 comboBox 변수가 선언되고 할당되는 위치를 확인할 수 있습니다. –
KISS. 그것을 간단하게 어리 석다. 데이터로 콤보 상자를 채우는 익명 메서드를 사용할 필요가 없습니다. 비동기 호출에 대한 간단한 위임과 각 루프에 대한 위임으로 충분합니다. 추가 보너스로 다음 프로그래머에게도 분명합니다. – mattmanser