GetParameters(MetadataReader reader, TypeReferenceTypeProvider typeProvider, GenericContext genericContext, MethodSignature <MetadataTypeReference> signature, ParameterHandleCollection handles) { var parameters = new IMetadataParameter[handles.Count]; var returnValueAttributes = (IReadOnlyList <IMetadataAttribute>)null; var maxSequenceNumber = 0; foreach (var handle in handles) { var parameter = reader.GetParameter(handle); if (parameter.SequenceNumber == 0) { returnValueAttributes = GetAttributes(reader, typeProvider, parameter.GetCustomAttributes(), genericContext); continue; } if (maxSequenceNumber < parameter.SequenceNumber) { maxSequenceNumber = parameter.SequenceNumber; } var parameterIndex = parameter.SequenceNumber - 1; parameters[parameterIndex] = new ReaderParameter(reader, typeProvider, parameter, genericContext, signature.ParameterTypes[parameterIndex]); } if (maxSequenceNumber == parameters.Length) { return(parameters, Array.Empty <IMetadataAttribute>()); } // Account for skipping the return parameter var correctedLength = new IMetadataParameter[maxSequenceNumber]; Array.Copy(parameters, correctedLength, correctedLength.Length); return(correctedLength, returnValueAttributes); }
public void ProcessRequest(HttpContext context) { if (string.IsNullOrEmpty(noimagePath)) { noimagePath = context.Server.MapPath("~\\images\\noimage.png"); } int imageID = -1; int.TryParse((context.Request.Params["id"] ?? "-1").ToString(), out imageID); bool isThumbnail = bool.Parse((context.Request.Params["thumbnail"] ?? "false").ToString()); ReaderParameter par = new ReaderParameter(); par.ImageId = imageID; par.IsThumbnail = isThumbnail; par.IsNoImagePath = noimagePath; par.DataSource = bll; par.IsThumbnail = isThumbnail; Thread thread = new Thread(picreader); thread.Start(par); //如果超过500毫秒未读取出来就直接停止 Thread.Sleep(500); if (!par.Success ||(thread.ThreadState != ThreadState.Stopped && thread.ThreadState != ThreadState.StopRequested )) { thread.Abort(); FileStream fstr = null; try { fstr = File.OpenRead(par.IsNoImagePath); par.CathedImage = System.Drawing.Image.FromStream(fstr, true); } catch { throw; } finally { fstr.Close(); } } System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg; par.CathedImage.Save(context.Response.OutputStream, format); }