IEnumWorkItems (Interfaces)
Last changed: -203.167.226.133

.
Summary
Part of the Task Scheduler 1.0 Interfaces, which consists of IEnumWorkItems, ITask, ITaskScheduler, ITaskTrigger and IScheduledWorkItem. There is some helper code below for actually using the iterator as the marshalling seemed impossible without resorting to the unmanaged helper functions in System.Runtime.InteropServices.Marshal. Not all methods have been tested, so be careful!

C# Definition:

    [Guid("148BD528-A2AB-11CE-B11F-00AA00530503"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IEnumWorkItems
    {
    int Next(uint celt, out IntPtr names,out uint namecount);
    int Skip(uint celt);
    int Reset() ;
    int Clone([MarshalAs(UnmanagedType.IUnknown)] out object EnumWorkItems);
    };

Helper Code

    using System;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;

    static public List<string> TaskList(ITaskScheduler taskscheduler)
    {
    object obj;

    taskscheduler.Enum(out obj);

    IEnumWorkItems enumerator = obj as IEnumWorkItems;
    uint       nameCount;
    IntPtr     namePtr;
    List<string>   list       = new List<string>();

    while (enumerator.Next(1, out namePtr, out nameCount) == 0 && nameCount == 1)
    {
        IntPtr name = Marshal.ReadIntPtr(namePtr);

        list.Add(Marshal.PtrToStringUni(name));

         Marshal.FreeCoTaskMem(namePtr);
    }

    return list;
    }

VB Definition:

<ComImport> _
<Guid("TODO")> _
'TODO: Insert <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ if this doesn't derive from IDispatch
Interface IEnumWorkItems
   TODO
End Interface

User-Defined Types:

None.

Notes:

None.

Documentation