mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
86 lines
2.3 KiB
C#
86 lines
2.3 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace MicrosoftZuneLibrary
|
|
{
|
|
public class CallbackOnUIThreadBimodalManaged_DONOTUSE : IDisposable
|
|
{
|
|
private IRequestCallbackOnUIThread _pUI;
|
|
|
|
private unsafe CallbackOnUIThreadBimodalUnmanaged_DONOTUSE* _pUnmanaged;
|
|
|
|
public unsafe CallbackOnUIThreadBimodalManaged_DONOTUSE(IRequestCallbackOnUIThread pUI)
|
|
{
|
|
//IL_0026: Expected I, but got I8
|
|
_pUI = pUI;
|
|
CallbackOnUIThreadBimodalUnmanaged_DONOTUSE* ptr = (CallbackOnUIThreadBimodalUnmanaged_DONOTUSE*)Module.@new(16uL);
|
|
CallbackOnUIThreadBimodalUnmanaged_DONOTUSE* pUnmanaged;
|
|
try
|
|
{
|
|
pUnmanaged = ((ptr == null) ? null : Module.MicrosoftZuneLibrary_002ECallbackOnUIThreadBimodalUnmanaged_DONOTUSE_002E_007Bctor_007D(ptr, this));
|
|
}
|
|
catch
|
|
{
|
|
//try-fault
|
|
Module.delete(ptr);
|
|
throw;
|
|
}
|
|
_pUnmanaged = pUnmanaged;
|
|
}
|
|
|
|
private void _007ECallbackOnUIThreadBimodalManaged_DONOTUSE()
|
|
{
|
|
_0021CallbackOnUIThreadBimodalManaged_DONOTUSE();
|
|
}
|
|
|
|
private unsafe void _0021CallbackOnUIThreadBimodalManaged_DONOTUSE()
|
|
{
|
|
CallbackOnUIThreadBimodalUnmanaged_DONOTUSE* pUnmanaged = _pUnmanaged;
|
|
if (pUnmanaged != null)
|
|
{
|
|
Module.MicrosoftZuneLibrary_002ECallbackOnUIThreadBimodalUnmanaged_DONOTUSE_002E__delDtor(pUnmanaged, 1u);
|
|
}
|
|
}
|
|
|
|
public unsafe virtual void CallbackOnUIThreadRequest(CallbackPriorityManaged priority, int id, void* pv, INativeDeferredCallback* pNativeDeferredCallback)
|
|
{
|
|
IntPtr pInterface = (IntPtr)pNativeDeferredCallback;
|
|
IntPtr pData = (IntPtr)pv;
|
|
_pUI.CallbackOnUIThreadRequest(priority, id, pData, pInterface);
|
|
}
|
|
|
|
public unsafe void Callback(int id, IntPtr pData, IntPtr pInterface)
|
|
{
|
|
Module.MicrosoftZuneLibrary_002ECallbackOnUIThreadBimodalUnmanaged_DONOTUSE_002ECallback(_pUnmanaged, id, (void*)pData, (INativeDeferredCallback*)pInterface.ToPointer());
|
|
}
|
|
|
|
protected virtual void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
|
|
{
|
|
if (P_0)
|
|
{
|
|
_0021CallbackOnUIThreadBimodalManaged_DONOTUSE();
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
_0021CallbackOnUIThreadBimodalManaged_DONOTUSE();
|
|
}
|
|
finally
|
|
{
|
|
base.Finalize();
|
|
}
|
|
}
|
|
|
|
public sealed override void Dispose()
|
|
{
|
|
Dispose(true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
~CallbackOnUIThreadBimodalManaged_DONOTUSE()
|
|
{
|
|
Dispose(false);
|
|
}
|
|
}
|
|
}
|