gpt4 book ai didi

asp.net - 尝试向服务器发送 byte[] 时,Xamarin 中出现 "Cannot access a disposedObject"异常

转载 作者:行者123 更新时间:2023-12-02 16:40:14 26 4
gpt4 key购买 nike

这个问题的旧版本太长了,所以在多次尝试解决这个问题之后,我发现所有的问题都可以简化为一个简单的问题。为什么这会产生 SystemObjectDispose。

    private async void PickPhotoButton_OnClicked(object sender, EventArgs e)
{
_globalStream = await DependencyService.Get<IPicturePicker>
().GetImageStreamAsync();
_globalArray = StreamToByteArray(_globalStream);

var gal = new GalleryResource()
{
Pic = _globalArray
};

MemoryObjects.CurrentGallery = gal;
var ctr = HelperMethods.GetInstance<GalleryController>();
await ctr.Post();


}

public byte[] StreamToByteArray(Stream input)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
return ms.ToArray();
}
}

流从 native 端到达,我将其转换为字节数组并将其传递到我的存储库中。一切都使用虚拟字节数组,因此流对象出现问题,可能会在此时关闭或处置。

此时在存储库中抛出异常:

var response = wait _client.PostAsync(endPoint, _repService.ConvertObjectToStringContent(obj));

ConvertObjectToStringContent(obj) - 不是这一部分。从这里它实际上返回一个值,并且在调试即内部可以看到字节数组。字节数组始终保持有效长度。

当我们从库中挑选完照片后,发生的唯一事件如下:

        void OnImagePickerFinishedPickingMedia(object sender, 
UIImagePickerMediaPickedEventArgs args)
{
UIImage image = args.EditedImage ?? args.OriginalImage;

if (image != null)
{
// Convert UIImage to .NET Stream object
NSData data = image.AsJPEG(1);
Stream stream = data.AsStream();


// Set the Stream as the completion of the Task
taskCompletionSource.SetResult(stream);
}
else
{
taskCompletionSource.SetResult(null);
}
imagePicker.DismissModalViewController(true);
}

但是它似乎没有处理流,即使它处理了,我们也已经从中得到了一个字节数组。

<小时/>

甚至尝试在 native 代码中执行此操作

 var client = new HttpClient();
var c = new MultipartFormDataContent();
c.Add(new StreamContent(image.AsJPEG(1).AsStream()));
var response = await client.PostAsync(Settings.EndPoint + "api/gallery/", c);

同样的错误。

最佳答案

我认为你的问题出在这一行_byteArray = ToByteArray(_array);

ToByteArray(stream) 似乎可能通过从流转换来返回字节数组,并且该流可能仍然具有对字节数组的引用。它可能已经被处置了。

如果在这个方法中,请发布它,我想知道

我的经验不够丰富,无法准确说出它的内容,但也许我的建议会击中正确的位置!

顺便说一句,你的代码看起来很干净,我喜欢它!

关于asp.net - 尝试向服务器发送 byte[] 时,Xamarin 中出现 "Cannot access a disposedObject"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50794909/

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