示例#1
0
        public static CommPackage DoWork(CommPackage workItem)
        {
            Type        type   = typeof(WorkerClass);
            MethodInfo  method = type.GetMethod(workItem.BackgroundProcessFunction);
            WorkerClass c      = new WorkerClass();

            // Build up parameter array
            object[] arr = new object[method.GetParameters().Count()];

            foreach (ParameterInfo pParameter in method.GetParameters())
            {
                IEnumerable <CommPackage.ParamListItem> x = (from y in workItem.ParameterList
                                                             where y.ParameterName == pParameter.Name
                                                             select y);



                if (x.Count() == 1)
                {
                    Type tTest = x.First().ParameterValue.GetType();
                    if (Type.GetTypeCode(tTest) == TypeCode.Int64)
                    {
                        arr[pParameter.Position] = Convert.ToInt32(x.First().ParameterValue);
                    }
                    else
                    {
                        arr[pParameter.Position] = x.First().ParameterValue;
                    }
                }
                else
                {
                    // Throw exception - param not given
                    throw new Exception("Parameter " + pParameter.Name + " not given.");
                }
            }

            // DateTime
            workItem.ComputationStartTime = DateTime.Now;
            int result = (int)method.Invoke(c, arr);

            workItem.ComputationEndTime = DateTime.Now;

            workItem.ComputationResult = new ResultPackage(result).SerializeJson();

            return(workItem);
        }
示例#2
0
        public static CommPackage DoWork(CommPackage workItem)
        {
            Type type = typeof(WorkerClass);
            MethodInfo method = type.GetMethod(workItem.BackgroundProcessFunction);
            WorkerClass c = new WorkerClass();

            // Build up parameter array
            object[] arr = new object[method.GetParameters().Count()];

            foreach (ParameterInfo pParameter in method.GetParameters()) {
                IEnumerable<CommPackage.ParamListItem> x = (from y in workItem.ParameterList
                                                            where y.ParameterName == pParameter.Name
                                                            select y);

                if (x.Count() == 1) {
                    Type tTest = x.First().ParameterValue.GetType();
                    if (Type.GetTypeCode(tTest) == TypeCode.Int64) {
                        arr[pParameter.Position] = Convert.ToInt32(x.First().ParameterValue);
                    } else {
                        arr[pParameter.Position] = x.First().ParameterValue;
                    }
                } else {
                    // Throw exception - param not given
                    throw new Exception("Parameter " + pParameter.Name + " not given.");
                }
            }

               // DateTime
            workItem.ComputationStartTime = DateTime.Now;
            int result = (int)method.Invoke(c, arr);
            workItem.ComputationEndTime = DateTime.Now;

            workItem.ComputationResult = new ResultPackage(result).SerializeJson();

            return workItem;
        }
示例#3
0
 public static void DoWork(CommPackage workItem)
 {
     workItem = WorkerClass.DoWork(workItem);
     SubmitResult(workItem);
 }