コード例 #1
0
ファイル: threadpool.cs プロジェクト: popotans/netext
        public DesktopNativeWorkItem(DacpWorkRequestData result)
        {
            _callback = result.Function;
            _data     = result.Context;

            switch (result.FunctionType)
            {
            default:
            case WorkRequestFunctionTypes.UNKNOWNWORKITEM:
                _kind = WorkItemKind.Unknown;
                break;

            case WorkRequestFunctionTypes.TIMERDELETEWORKITEM:
                _kind = WorkItemKind.TimerDelete;
                break;

            case WorkRequestFunctionTypes.QUEUEUSERWORKITEM:
                _kind = WorkItemKind.QueueUserWorkItem;
                break;

            case WorkRequestFunctionTypes.ASYNCTIMERCALLBACKCOMPLETION:
                _kind = WorkItemKind.AsyncTimer;
                break;

            case WorkRequestFunctionTypes.ASYNCCALLBACKCOMPLETION:
                _kind = WorkItemKind.AsyncCallback;
                break;
            }
        }
コード例 #2
0
ファイル: LegacyRuntime.cs プロジェクト: timhe/clrmd
        internal override IEnumerable <NativeWorkItem> EnumerateWorkItems()
        {
            IThreadPoolData data = GetThreadPoolData();

            if (_version == DesktopVersion.v2)
            {
                ulong  curr  = data.FirstWorkRequest;
                byte[] bytes = GetByteArrayForStruct <DacpWorkRequestData>();

                while (Request(DacRequests.WORKREQUEST_DATA, curr, bytes))
                {
                    GCHandle            handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
                    DacpWorkRequestData result = (DacpWorkRequestData)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(DacpWorkRequestData));
                    handle.Free();

                    yield return(new DesktopNativeWorkItem(result));

                    curr = result.NextWorkRequest;
                    if (curr == 0)
                    {
                        break;
                    }
                }
            }
        }
コード例 #3
0
        public DesktopNativeWorkItem(DacpWorkRequestData result)
        {
            Callback = result.Function;
            Data     = result.Context;

            Kind = result.FunctionType switch
            {
                WorkRequestFunctionTypes.TIMERDELETEWORKITEM => WorkItemKind.TimerDelete,
                WorkRequestFunctionTypes.QUEUEUSERWORKITEM => WorkItemKind.QueueUserWorkItem,
                WorkRequestFunctionTypes.ASYNCTIMERCALLBACKCOMPLETION => WorkItemKind.AsyncTimer,
                WorkRequestFunctionTypes.ASYNCCALLBACKCOMPLETION => WorkItemKind.AsyncCallback,
                _ => WorkItemKind.Unknown,
            };
        }
コード例 #4
0
ファイル: threadpool.cs プロジェクト: Pavel-Durov/msos
        public DesktopNativeWorkItem(DacpWorkRequestData result)
        {
            m_callback = result.Function;
            m_data = result.Context;

            switch (result.FunctionType)
            {
                default:
                case WorkRequestFunctionTypes.UNKNOWNWORKITEM:
                    m_kind = WorkItemKind.Unknown;
                    break;

                case WorkRequestFunctionTypes.TIMERDELETEWORKITEM:
                    m_kind = WorkItemKind.TimerDelete;
                    break;

                case WorkRequestFunctionTypes.QUEUEUSERWORKITEM:
                    m_kind = WorkItemKind.QueueUserWorkItem;
                    break;

                case WorkRequestFunctionTypes.ASYNCTIMERCALLBACKCOMPLETION:
                    m_kind = WorkItemKind.AsyncTimer;
                    break;

                case WorkRequestFunctionTypes.ASYNCCALLBACKCOMPLETION:
                    m_kind = WorkItemKind.AsyncCallback;
                    break;
            }
        }