Stiamo tentando di annullare l'iscrizione da eventSubscripton nel nostro Codice evento. Stiamo utilizzando il seguente codiceSDL Tridion EventSubscription Annulla sottoscrizione Numero
[TcmExtension("EventHandlerExtension")]
public class EventHandler : TcmExtension, IDisposable
{
private EventSubscription componentSaveSubscription = null;
private EventSubscription componentPublishSubscription = null;
#region Public Methods
/// <summary>
/// Handle for Eventing System
/// </summary>
public EventHandler()
{
Subscribe();
}
/// <summary>
/// Subscribe Events
/// </summary>
public void Subscribe()
{
//News Article Page created when component Save
componentSaveSubscription = EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSavePost, EventPhases.TransactionCommitted);
//EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSavePost, EventPhases.TransactionCommitted);
componentPublishSubscription = EventSystem.Subscribe<Component, PublishOrUnPublishEventArgs>(OnComponentPublishOrUnPublishPost, EventPhases.TransactionCommitted);
//EventSystem.Subscribe<StructureGroup, PublishOrUnPublishEventArgs>(OnStructureGroupPublishInitiated, EventPhases.TransactionCommitted);
}
/// <summary>
/// IDisposable Implementation
/// </summary>
public void Dispose()
{
if (componentSaveSubscription != null) componentSaveSubscription.Unsubscribe();
if (componentPublishSubscription != null) componentPublishSubscription.Unsubscribe();
}}
Quello che abbiamo osservato è che una volta che “{} EventSubsciption .Unsubscribe” si chiama, Eventing smette di funzionare per gli eventi successivi per i quali si suppone di lavorare. Una volta riavviati i servizi relativi al sistema degli eventi, il codice evento funziona come previsto solo per la prima volta e non viene mai chiamato per eventi successivi (per i quali avrebbe dovuto funzionare).
quando è 'Dispose)' viene richiamato il metodo del vostro oggetto (? Per quanto ne so, ciò dovrebbe accadere solo quando il modulo su cui è in esecuzione il gestore viene arrestato (e potenzialmente nemmeno in quel momento). –
E se non si dispone di Dispose() funziona come previsto? Quindi smettere di smaltire? –