我试图在 yield return 之后执行代码。我有调用另一个方法的 WebMethod,我想在将值返回给 WebMethod 后做一些工作(执行方法 setNextCampaign()) 这是我的代码:
[WebMethod]
public long NextCall(long UserID)
{
CampaignManagerExtended cacheCampaignManager = fillCampaignManager(false);
return cacheCampaignManager.NextCall(UserID).First();
}
public IEnumerable<long> NextCall(long UserID)
{
UserExtended ue = null;
try
{
if (!CacheUsers.ContainsKey(UserID))
AddUser(UserID);
ue = CacheUsers.First(p => p.Key == UserID).Value;
if (ue.NextCampaign != null)
{
QueueItemPersonal qp = ue.NextFromPersonalQueue();
if (qp != null)
{
yield return qp.CampaignPersonID;
}
else
{
QueueItemScheduled qs = ue.NextCampaign.NextFromScheduleQueue();
if (qs != null)
{
yield return qs.CampaignPersonID;
}
else
{
QueueItemGeneral qg = ue.NextCampaign.NextFromGeneralQueue();
if (qg != null)
{
yield return qg.CampaignPersonID;
}
else
yield return 0;
}
}
ue.NextCampaign.fillGeneralQueue();
ue.setNextCampaign();
}
else
yield return 0;
}
//catch
//{
// yield return 0;
//}
finally
{
}
}
有什么想法吗?
最佳答案
代替这个
<some stuff>;
yield return <something>;
<some epilog stuff that should be executed after yield>
这样做:
try
{
<some stuff>;
yield return <something>;
}
finally
{
<some epilog stuff that should be executed after yield>
}
关于c# - 返回值后执行代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654661/