C# 仅获取最新的异步查询结果
所以我使用WCF服务进行查询并获得结果。问题是,如果我向服务发出例如5个背靠背请求,我只想得到我请求的最后第5个查询的结果,因为前4个查询不再有效。但是,有时服务会在第4个和第3个结果之前返回第5个结果,因为这是一个异步回调。我的最终结果是第三名或第四名,而不是第五名。我如何解决这个问题?谁能给我指一下正确的方向吗C# 仅获取最新的异步查询结果,c#,wcf,asynchronous,C#,Wcf,Asynchronous,所以我使用WCF服务进行查询并获得结果。问题是,如果我向服务发出例如5个背靠背请求,我只想得到我请求的最后第5个查询的结果,因为前4个查询不再有效。但是,有时服务会在第4个和第3个结果之前返回第5个结果,因为这是一个异步回调。我的最终结果是第三名或第四名,而不是第五名。我如何解决这个问题?谁能给我指一下正确的方向吗 mSearchView.QueryTextChange += (s, e) => { queryText = e.NewText;
mSearchView.QueryTextChange += (s, e) =>
{
queryText = e.NewText;
GetUserList(queryText, PageIndex);
};
private void GetUserList(string queryData, int PageIndex)
{
UserRepository.UserRepositoryClient client = new UserRepository.UserRepositoryClient(Config.Binding.BasicHttpBinding(),
new EndpointAddress(Config.ServiceReferences.Repositories.UserRepositoryUrl)
);
using (var scope = new OperationContextScope(client.InnerChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(Global.Header.GetHeaderModern());
client.QueryAsync(new UserRepository.UserQueryArgument
{
FullNameLastFirst = queryData,
Pager = new UserRepository.QueryPager
{
Index = PageIndex,
Size = 30,
ZeroIndexed = true
}
});
client.QueryCompleted += client_QueryCompleted;
}
}
void client_QueryCompleted(object sender, UserRepository.QueryCompletedEventArgs e)
{
if (e.Result.Data != null )
{
RunOnUiThread(() => UpdateView(e.Result.Data.ToList()));
}
else
{
RunOnUiThread(() => UpdateView(null));
}
}
}
发布你的代码。有一个bug,或者你的方法完全偏离轨道。@我更新了PySub应该考虑移到<代码>异步任务< /C>模式,而不是实现回调。Web服务完全远离我,我无法访问或编辑。我可以调用并获得结果的唯一方法是通过我在上面代码中所做的方式。有没有一种方法可以提出一个逻辑来解决现有代码中的问题?