I have written a event system which will be triggered on any page save to publish it. It shows in the event viewer that the event is initiated but taken 30 mins to 1 hr or more to complete it's execution and log the necessary outcome. Does it take so long to execute. This is the code.
using System;
using System.IO;
using System.Collections.Generic;
using Tridion.ContentManager;
using Tridion.ContentManager.CommunicationManagement;
using Tridion.ContentManager.ContentManagement;
using Tridion.ContentManager.ContentManagement.Fields;
using Tridion.ContentManager.Extensibility;
using Tridion.ContentManager.Extensibility.Events;
using Tridion.Logging;
using Tridion.ContentManager.Publishing;
using Tridion.ContentManager.Templating;
namespace ClassLibrary1
{
[TcmExtension("PagePublishOnItemSave")]
public class Class1 : TcmExtension
{
EventSubscription _subscription;
public Class1()
{
_subscription = EventSystem.Subscribe<IdentifiableObject, SaveEventArgs>
(OnItemSavePost, EventPhases.Processed);
}
private static void OnItemSavePost(IdentifiableObject item,
SaveEventArgs args, EventPhases phase)
{
IEnumerable<IdentifiableObject> items = new List<IdentifiableObject> { item };
TcmUri pageid = new TcmUri(item.Id);
bool rollBackOnFailure = true;
bool includeComponentLinks = true;
PublishInstruction instruction = new PublishInstruction(item.Session)
{
DeployAt = DateTime.Now,
RenderInstruction = new RenderInstruction(item.Session)
{
RenderMode = Tridion.ContentManager.Publishing.RenderMode.Publish
},
ResolveInstruction = new ResolveInstruction(item.Session)
{
IncludeComponentLinks = includeComponentLinks
},
RollbackOnFailure = rollBackOnFailure,
StartAt = DateTime.MinValue
};
string publicationId = pageid.PublicationId.ToString();
Publication publication = new Publication(new TcmUri(publicationId), item.Session);
PublicationTarget ptar = new PublicationTarget(new TcmUri("tcm:0-11-65537"),
item.Session);
IEnumerable<PublicationTarget> pubTarget = new List<PublicationTarget>() {ptar};
IList<Publication> links = ptar.Publications;
if (links.Contains(publication))
{
if (item.Id.ItemType == ItemType.Page)
{
PublishEngine.Publish(items, instruction, pubTarget);
using (StreamWriter writer = File.CreateText(
@"c:\logfolder\Initiated "
+ DateTime.Now.ToString("HHmmssffff") + ".txt"))
{
writer.WriteLine(item.Title + " is published");
writer.Close();
}
}
}
}
public void Dispose()
{
_subscription.Unsubscribe();
}
}
}