private void completionThreadFunction()

in SmvLibrary/JobObject.cs [154:193]


        private void completionThreadFunction()
        {
            bool fDone = false;
            while (!fDone)
            {
                uint dwBytesXferred;
                UIntPtr compKey;
                IntPtr po;
                NativeMethods.GetQueuedCompletionStatus(hiocp, out dwBytesXferred, out compKey, out po, Timeout.Infinite);
                int value = (int)compKey.ToUInt32();
                switch (value)
                {
                    case COMPKEY_TERMINATE:
                        {
                            fDone = true;
                            break;
                        }
                    case COMPKEY_JOBOBJECT:
                        {
                            switch (dwBytesXferred)
                            {
                                case JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT:
                                    Log.LogError("Memory limit exceeded");
                                    fDone = true;
                                    break;
                                case JOB_OBJECT_LIMIT_PROCESS_TIME:
                                    Log.LogError("Time limit exceeded");
                                    fDone = true;
                                    break;
                            }
                            break;
                        }
                    default:
                        {
                            fDone = false;
                            break;
                        }
                }
            }
        }