internal void TrackGCHandle(GCHandle handle) { gcHandle = handle; Completed += new ComputeCommandStatusChanged(Cleanup); Aborted += new ComputeCommandStatusChanged(Cleanup); }
internal void TrackGCHandle(GCHandle gcHandle) { var freeDelegate = new ComputeCommandStatusChanged((s, e) => { if (gcHandle.IsAllocated && gcHandle.Target != null) { gcHandle.Free(); } }); Completed += freeDelegate; Aborted += freeDelegate; }
internal ComputeEvent(IntPtr handle, ComputeCommandQueue queue) { unsafe { Handle = handle; CommandQueue = queue; Type = (ComputeCommandType)GetInfo<ComputeEventInfo, uint>( ComputeEventInfo.CommandType, CL10.GetEventInfo); Context = queue.Context; if (CommandQueue.Device.Version == new Version(1, 1)) HookNotifier(); Completed += new ComputeCommandStatusChanged(ComputeEvent_Fired); Aborted += new ComputeCommandStatusChanged(ComputeEvent_Fired); } }
internal ComputeEvent(IntPtr handle, ComputeCommandQueue queue) { unsafe { Handle = handle; CommandQueue = queue; Type = (ComputeCommandType)GetInfo<ComputeEventInfo, uint>( ComputeEventInfo.CommandType, CL10.GetEventInfo); Context = queue.Context; if (CommandQueue.Device.Version == new Version(1, 1)) HookNotifier(); Completed += new ComputeCommandStatusChanged(ComputeEvent_Fired); Aborted += new ComputeCommandStatusChanged(ComputeEvent_Fired); } Trace.WriteLine("Created " + this + " in Thread(" + Thread.CurrentThread.ManagedThreadId + ")."); }