나는이 코드를 매우 간단하게 보이지만 AutoResetEvent는 결코 신호를받지 못한다. 웹 서비스에서 반환 된 것으로 보이는 것은 없으며 WaitAll은 10 초 후에 종료됩니다. 스레딩 jiggerypokery 없이는 모든 것이 잘 작동하므로 웹 서비스 문제는 아닙니다. 내가 도대체 뭘 잘못하고있는 겁니까?내 AutoResetEvent 코드에 문제가 있습니까?
AutoResetEvent[] autoEvents;
ObservableCollection<Tx3.ResourceService.ResourceTime> resourceTime;
ObservableCollection<Tx3.ResourceService.ResourceTimeDetail> resourceTimeDetail;
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
autoEvents = new AutoResetEvent[]
{
new AutoResetEvent(false),
new AutoResetEvent(false),
};
var resourceService = getResourceServiceClient();
// Get ResourceTime data for this user
resourceService.ListResourceTimeAsync(CategoryWorkItemId, ResourceId);
resourceService.ListResourceTimeCompleted += new EventHandler<Tx3.ResourceService.ListResourceTimeCompletedEventArgs>(resourceService_ListResourceTimeCompleted);
// Get ResourceTimeDetails
resourceService.ListResourceTimeDetailAsync(CategoryWorkItemId, ResourceId);
resourceService.ListResourceTimeDetailCompleted += new EventHandler<ListResourceTimeDetailCompletedEventArgs>(resourceService_ListResourceTimeDetailCompleted);
WaitHandle.WaitAll(autoEvents, 10000);
System.Diagnostics.Debug.WriteLine("do something with both datasets");
}
void resourceService_ListResourceTimeCompleted(object sender, Tx3.ResourceService.ListResourceTimeCompletedEventArgs e)
{
resourceTime = e.Result;
autoEvents[0].Set();
}
void resourceService_ListResourceTimeDetailCompleted(object sender, ListResourceTimeDetailCompletedEventArgs e)
{
resourceTimeDetail = e.Result;
autoEvents[1].Set();
}
내가 순진 첫번째 추측을 제공 할 수 있습니다
어리석은 소시지 (!) 나는 핸들러를 올바른 방법으로 작성했다고 가정합니다. – Paul
좋아요, 나는 핸들러를 수정하려고했습니다 ... 똑같은 문제. – Paul
웹 서비스 인 경우 Wireshark를 조작하고 올바르게 작동하는지 확인할 수 있습니다. 응답이 다시 돌아 오는지 확인할 수 있습니까? 그렇다면 콜백 메서드에 중단 점을 설정하고 거기에 있는지 확인하십시오. 기본적으로 모든 단계를 확인할 수있을 때까지 가능한 한 길을 따라가보십시오. – qid