【发布时间】:2010-09-22 09:41:30
【问题描述】:
我对此感到困惑,如果有任何帮助,我将不胜感激!
我正在使用 WCF 和 Visual Studio 生成的 -asynch- 方法调用 Amazon api。
有一个 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]);
}
也许我在这里遗漏了一些东西,但我不知道为什么事件似乎迟到了?
我应该放弃异步方法并使用带有后台工作程序的同步方法吗? (也许更直接?)
感谢您提供的任何帮助或指点!
【问题讨论】:
标签: c# wcf asynchronous