TridionからデータをフェッチするためにC#コードとTridion(CMS)クラスを使用しています。以下は、Tridionからすべてのパブリケーションリストを取得するためのコードです。
protected void btnPublishPublicationList_Click(object sender, EventArgs e)
{
try
{
PublicationBL pubBL = new PublicationBL();
TridionCollection<Publication> pubAllList = pubBL.getAllPublicationList();
List<PublicationsBO> pubBos = new List<PublicationsBO>();
foreach (Publication pub in pubAllList)
{
if ((pub.Title.StartsWith("07"))||(pub.Title.StartsWith("08")))
{
PublicationsBO pubBO = new PublicationsBO();
pubBO.publicationID = pub.ID;
pubBO.publicationName = pub.Title;
pubBos.Add(pubBO);
}
}
pubBL.createPublicationListXML(pubBos);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}
上記のボタンクリックのコードでは、.netコードを使用し、Tridionクラスを使用して、以下のようにすべてのパブリケーションリストを取得しています。
TridionCollection<Publication> pubAllList = pubBL.getAllPublicationList();
Tridionからすべてのパブリケーションリストを非常に高速に取得していますが、以下のようにforeachループを実行すると、プロセスがスタックし、これを行うのに多くの時間がかかります。
foreach (Publication pub in pubAllList)
{
if ((pub.Title.StartsWith("07"))||(pub.Title.StartsWith("08")))
{
PublicationsBO pubBO = new PublicationsBO();
pubBO.publicationID = pub.ID;
pubBO.publicationName = pub.Title;
pubBos.Add(pubBO);
}
}
デバッグした後、デバッガーが来ると、foreach (Publication pub in pubAllList)
かなりの時間がかかることがわかりました。Publicationクラスオブジェクトの作成には時間がかかり、Tridionクラスだと思います。
これを行う他の方法を提案するか、上記のコードの何が問題になっているのかを提案してください。
ありがとう。