我有一段代码可以搜索多个第三方 API。我根据搜索条件将搜索分为 2 组。我开始两个搜索,因为每个搜索都非常及时,但是如果第一组搜索结果匹配,我不想等待第二个搜索组完成。所以基本上我所拥有的是:
Dictionary<string, string> result = null;
NameSearchDelegate nameDel = new NameSearchDelegate(SearchByName);
IAsyncResult nameTag = nameDel.BeginInvoke(name, null, null);
if(!string.IsNullOrWhiteSpace(telNum))
{
result = SearchByTelNum(telNum);//Will return null if a match is not found
}
if(null == result)
{
result = nameDel.EndInvoke(nameTag);
}
//End the delegate to prevent memory leak
//else
//{
// nameDel.EndInvoke(nameTag)
//}
return result;
因此,我想在调用 SearchByTelNum 之前启动 SearchByName,以防它找不到匹配项,但是如果它确实找到匹配项,我不想在返回匹配项之前等待 SearchByName 完成。如果我不再需要它的结果,有什么方法可以简单地结束或取消该委托?