📄 itemevents_eventprovider.cs
字号:
lock (this)
{
if (this.m_ConnectionPoint == null)
{
this.Init();
}
ItemEvents_SinkHelper helper = new ItemEvents_SinkHelper();
int pdwCookie = 0;
this.m_ConnectionPoint.Advise((object) helper, out pdwCookie);
helper.m_dwCookie = pdwCookie;
helper.m_WriteDelegate = handler1;
this.m_aEventSinkHelpers.Add((object) helper);
}
}
public override void Dispose()
{
this.Finalize();
GC.SuppressFinalize(this);
}
public override void Finalize()
{
Monitor.Enter(this);
try
{
if (this.m_ConnectionPoint != null)
{
int count = this.m_aEventSinkHelpers.Count;
int num2 = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[num2];
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
num2++;
}
while (num2 < count);
}
Marshal.ReleaseComObject(this.m_ConnectionPoint);
}
}
catch (Exception)
{
}
finally
{
Monitor.Exit(this);
}
}
private void Init()
{
UCOMIConnectionPoint ppCP = null;
byte[] b = new byte[] { 0x3a, 0x30, 6, 0, 0, 0, 0, 0, 0xc0, 0, 0, 0, 0, 0, 0, 70 };
Guid riid = new Guid(b);
this.m_ConnectionPointContainer.FindConnectionPoint(ref riid, out ppCP);
this.m_ConnectionPoint = ppCP;
this.m_aEventSinkHelpers = new ArrayList();
}
public override void remove_AttachmentAdd(ItemEvents_AttachmentAddEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_AttachmentAddDelegate != null) && (helper.m_AttachmentAddDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(this.m_ConnectionPoint);
this.m_ConnectionPoint = null;
this.m_aEventSinkHelpers = null;
}
break;
}
index++;
}
while (index < count);
}
}
}
public override void remove_AttachmentRead(ItemEvents_AttachmentReadEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_AttachmentReadDelegate != null) && (helper.m_AttachmentReadDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(this.m_ConnectionPoint);
this.m_ConnectionPoint = null;
this.m_aEventSinkHelpers = null;
}
break;
}
index++;
}
while (index < count);
}
}
}
public override void remove_BeforeAttachmentSave(ItemEvents_BeforeAttachmentSaveEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_BeforeAttachmentSaveDelegate != null) && (helper.m_BeforeAttachmentSaveDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(this.m_ConnectionPoint);
this.m_ConnectionPoint = null;
this.m_aEventSinkHelpers = null;
}
break;
}
index++;
}
while (index < count);
}
}
}
public override void remove_BeforeCheckNames(ItemEvents_BeforeCheckNamesEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_BeforeCheckNamesDelegate != null) && (helper.m_BeforeCheckNamesDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(this.m_ConnectionPoint);
this.m_ConnectionPoint = null;
this.m_aEventSinkHelpers = null;
}
break;
}
index++;
}
while (index < count);
}
}
}
public override void remove_Close(ItemEvents_CloseEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_CloseDelegate != null) && (helper.m_CloseDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(this.m_ConnectionPoint);
this.m_ConnectionPoint = null;
this.m_aEventSinkHelpers = null;
}
break;
}
index++;
}
while (index < count);
}
}
}
public override void remove_CustomAction(ItemEvents_CustomActionEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_CustomActionDelegate != null) && (helper.m_CustomActionDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
{
Marshal.ReleaseComObject(this.m_ConnectionPoint);
this.m_ConnectionPoint = null;
this.m_aEventSinkHelpers = null;
}
break;
}
index++;
}
while (index < count);
}
}
}
public override void remove_CustomPropertyChange(ItemEvents_CustomPropertyChangeEventHandler handler1)
{
lock (this)
{
int count = this.m_aEventSinkHelpers.Count;
int index = 0;
if (0 < count)
{
do
{
ItemEvents_SinkHelper helper = (ItemEvents_SinkHelper) this.m_aEventSinkHelpers[index];
if ((helper.m_CustomPropertyChangeDelegate != null) && (helper.m_CustomPropertyChangeDelegate.Equals((object) handler1) & 0xff))
{
this.m_aEventSinkHelpers.RemoveAt(index);
this.m_ConnectionPoint.Unadvise(helper.m_dwCookie);
if (count <= 1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -