Я озадачен этим и буду признателен за любую помощь!
Я вызываю API-интерфейс Amazon с помощью WCF и сгенерированные Visual Studio -asynch- методы.
ЕстьWPF page
, с кнопкой.Нажмите кнопку, и он вызывает метод поиска в другом классе.(см. код ниже)
В этом другом классе поисковика я добавляю метод AmazonItemSearchCompleted
для обработки события ItemSearchCompleted
.Затем я вызываю функцию асинхронного поиска из сгенерированного кода wcf.
Client.ItemSearchCompleted += AmazonItemSearchCompleted;
Client.ItemSearchAsync(itemSearch);
Кажется, все это работает нормально.Но метод AmazonItemSearchCompleted
, кажется, получает удар только после того, как весь код в вызывающей форме заканчивается, т.е.хотя, когда я наступаю (независимо от того, как долго я жду ответа службы), она попадает в заключительную скобку после searchAmazon
(). Но к этому времени уже слишком поздно использовать результат запроса !!
private void button1_Click(object sender, RoutedEventArgs e)
{
searchAmazon();
} // <----- AmazonItemSearchCompleted get's hit here
private void searchAmazon()
{
var AzSearch = new AmazonSearch();
var ISBNS = new List<string>();
ISBNS.Add("0439023513");
//ISBNS.Add("9780071374323");
AzSearch.GetBookNameFromISBN(ISBNS[0]);
}
Возможно, я что-то здесь упускаю, но я понятия не имею, почему событие кажетсяпоздний пожар?
Должен ли я отказаться от асинхронных методов и использовать синхронные с фоновым рабочим?(может быть, проще?)
Спасибо за любую помощь или указатели, которые вы можете предложить!