【发布时间】:2011-07-31 22:52:04
【问题描述】:
我正在编写一个呼叫跟踪应用程序,它访问一个推送服务器并获取传入呼叫的 JSON 结果集。在 JSON 对象中,有一个包含每个呼叫的 logID 的键数组。
当一个新的调用进来时,我创建一个新的标签页并将一个调用对象与标签页标签属性相关联。然后我检查是否已处理调用,如果它有推送服务器从 Keys 数组中删除 logID。然后我将 Keys 数组中的 logIds 与每个调用对象的 logIds 进行比较,这与每个打开的选项卡相关联。
运行我的代码时,它会从 _psKeys 列表中删除 logID,然后在下一次迭代中将其添加回来。谁能告诉我我做错了什么。
var jsonResult = _pushServer.GetWebRequest(_pushServer.GetNewCallUrl(_locationID, _clientID));
var jsonObject = _pushServer.GetJsonObject(jsonResult);
_tabKeys.Clear();
_psKeys.Clear();
// Load the tabKeys with all the keys for the open tabs.
foreach (TabPage tab in newCallTabControl.TabPages)
{
Call call = (Call)tab.Tag;
_tabKeys.Add(call.LogID);
}
// Load the Push Server Keys
foreach (string key in jsonObject.keys)
{
_psKeys.Add(key);
}
// Iterate over the keys and compare
foreach (string tabKey in _tabKeys)
{
foreach (string psKey in _psKeys)
{
if (! _tabKeys.Contains(psKey))
{
// Remove the tab
foreach (TabPage tabPage in newCallTabControl.TabPages)
{
Call tabCallObject = (Call)tabPage.Tag;
if (tabCallObject.LogID == tabKey)
{
newCallTabControl.TabPages.Remove(tabPage);
}
}
}
}
}
【问题讨论】:
-
这在codereview stackexchange上会更好