コード例 #1
0
        /// <summary>
        /// ExecuteAsync
        /// </summary>
        /// <param name="context"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            // Inputs
            var process = Process.Get(context);

            var ret = MonitorProcess.GetMonitoredValue(process);

            ulong[] eachCpu = { ret[MonitorItem.SystemEachCpu00to07], ret[MonitorItem.SystemEachCpu08to15], ret[MonitorItem.SystemEachCpu16to23], ret[MonitorItem.SystemEachCpu24to31] };

            int cpuCount = Environment.ProcessorCount;

            if (cpuCount > MonitorProcess.MAX_CPU_COUNT)
            {
                cpuCount = MonitorProcess.MAX_CPU_COUNT;
            }

            float[] eachCpuArray = new float[cpuCount];
            for (int i = 0; i < cpuCount; i++)
            {
                ulong cpuValue = eachCpu[i >> 2];
                eachCpuArray[i] = (float)(cpuValue & 0xFF);
                eachCpu[i >> 2] = eachCpu[i >> 2] >> 8;
            }

            // Outputs
            return((ctx) => {
                RawValue.Set(ctx, ret);

                SystemTotalCpu.Set(ctx, (float)ret[MonitorItem.SystemTotalCpu] / 100F);
                SystemTotalCpuMA.Set(ctx, (float)ret[MonitorItem.SystemTotalCpuMA] / 100F);
                SystemEachCpu.Set(ctx, eachCpuArray);

                SystemTotalPhysicalMemory.Set(ctx, ret[MonitorItem.SystemTotalPhysicalMemory]);
                SystemAvailablePhisycalMemory.Set(ctx, ret[MonitorItem.SystemAvailablePhisycalMemory]);
                SystemTotalVirtualMemory.Set(ctx, ret[MonitorItem.SystemTotalVirtualMemory]);
                SystemAvilableVirtualMemory.Set(ctx, ret[MonitorItem.SystemAvilableVirtualMemory]);

                ProcessWorkingSet.Set(ctx, ret[MonitorItem.ProcessWorkingSet]);
                ProcessWorkingSetMA.Set(ctx, ret[MonitorItem.ProcessWorkingSetMA]);
                ProcessPrivateMemorySize.Set(ctx, ret[MonitorItem.ProcessPrivateMemorySize]);
                ProcessPrivateMemorySizeMA.Set(ctx, ret[MonitorItem.ProcessPrivateMemorySizeMA]);

                ProcessTotalManagedMemory.Set(ctx, ret[MonitorItem.ProcessTotalManagedMemory]);
                ProcessTotalProcessorTime.Set(ctx, ret[MonitorItem.ProcessTotalProcessorTime]);
                ProcessTotalProcessorTimeDelta.Set(ctx, ret[MonitorItem.ProcessTotalProcessorTimeDelta]);
                ProcessResponding.Set(ctx, ret[MonitorItem.ProcessResponding] != 0 ? true : false);
                ProcessRespondingCount.Set(ctx, (int)ret[MonitorItem.ProcessRespondingCount]);
            });
        }