gpt4 book ai didi

c# - 如何通过 WebClient 请求传递信息以识别加载的对象?

转载 作者:太空狗 更新时间:2023-10-29 23:11:34 26 4
gpt4 key购买 nike

我有一个名为 DataItems 的自定义对象集合,其中包含我要加载并放入我的 Silverlight 集合中的图像 的 URI > 要使用的应用程序。

当我处理每个 DataItem 时,我得到它的 SourceUri(例如“http://..../picture001.png”)并启动它加载:

void LoadNext()
{
WebClient webClientImgDownloader = new WebClient();
if (loadedItemIndex < RegisteredDataEntries.Count())
{
DataItem dataItem = RegisteredDataEntries[registeredIdCodes[loadedItemIndex]];
if (dataItem.Kind == DataItemKind.Image)
{
webClientImgDownloader.OpenReadCompleted +=
new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted);
webClientImgDownloader.OpenReadAsync(new Uri(dataItem.SourceUri,
UriKind.Absolute));
webClientImgDownloader.AddObject(dataItem); //????????????????????
webClientImgDownloader.Headers["idCode"] = dataItem.IdCode; //?????????????
webClientImgDownloader.ResponseHeaders["idCode"] = dataItem.IdCode; //?????????????
}
}
else
{
OnLoadingComplete(this, null);
}
}

然后当该图像加载完成时,我将图像保存在集合中:

void webClientImgDownloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
dataItemIdCode = e.DataItem.IdCode; //???????????????????
dataitemIdCode = ((DataItem)sender).IdCode; //?????????????????????

BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(e.Result);

Image image = new Image();
image.Source = bitmap;
Images.Add(dataItemIdCode, image);
}

但我如何将当前 DataItem 的 IdCode 传递到我的 OpenReadCompleted 方法,以便当该图像完成加载时,我也可以根据它的 IdCode 识别它?

回答:

Franci 的建议奏效了,这里是为其他正在寻找此内容的人准备的行::

webClientImgDownloader.OpenReadAsync(new Uri(dataItem.SourceUri, 
UriKind.Absolute), dataItem);
...
DataItem dataItem = e.UserState as DataItem;

最佳答案

有一个 OpenDataAsync采用用户 token 对象的重载。您应该在 OpenReadCompletedEventArgs 中获取此对象,在 UserState 中属性(继承自 AsyncCompletedEventArgs)。

关于c# - 如何通过 WebClient 请求传递信息以识别加载的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com