如何在C# xamarin窗体android中清除MultipartFormDataContent?

3pvhb19x  于 2022-12-07  发布在  C#
关注(0)|答案(1)|浏览(137)

我正在使用C# xamarin窗体android,我试图*删除*我的MultipartFormDataContent中的项目,但我无法执行此操作。我尝试了以下代码:
当我尝试再次上传MultipartFormDataContent时,使用null会显示错误“System.NullReferenceException:对象引用未设置为对象的示例。”

content = null;

我也尝试过Dispose(),但当我再次尝试上传时,它给了我这个错误“System.ArgumentOutOfRangeException:索引超出范围.必须为非负数且未来集合得大小.":

content.Dispose();

但它不允许我清理MultipartFormDataContent。
这是我代码:

MultipartFormDataContent content = new MultipartFormDataContent();
    List<StreamContent> listStreamContent = new List<StreamContent>();
    private async void sendImages()
    {
        for (int x = 0; x < listStreamContent.Count; x++)
        {
           content.Add(listStreamContent[x], "file", listFullPathImg[x]);
        }
        var httpClient = new HttpClient();
        var response = await httpClient.PostAsync(url, content);
        string res = await response.Content.ReadAsStringAsync();
        await DisplayAlert("Result", res, "okey");
        for (int x = 0; x < listFullPathImg.Count; x++)
        {
           File.Delete(listFullPathImg[x]);
        }
        clearMultipartFormDataContent();
    }

    public void clearMultipartFormDataContent()
    {
        try
        {
            listStreamContent.Clear();
            content.Dispose();

            //content = null;
        }
        catch (Exception ex)
        {
            // handler exception
        }
    }

我知道比如说,有了这样一个列表

List<string> listImgName = new List<string>();

我可以这样做,它会清理我列表:

listImgName.Clear();

如果不使用MultipartFormDataContent,我怎么能做这样的事情呢?
非常感谢!

sbtkgmzw

sbtkgmzw1#

解决方案

无法清除我的MultipartFormDataContent,但我可以在我的函数内声明它。这样它就销毁了自己,我可以再次使用它。所以我这样做了,它工作了。我把代码留在这里:

List<StreamContent> listStreamContent = new List<StreamContent>();
private async void sendImages()
{
    MultipartFormDataContent content = new MultipartFormDataContent();
    for (int x = 0; x < listStreamContent.Count; x++)
    {
       content.Add(listStreamContent[x], "file", listFullPathImg[x]);
    }
    var httpClient = new HttpClient();
    var response = await httpClient.PostAsync(url, content);
    string res = await response.Content.ReadAsStringAsync();
    await DisplayAlert("Result", res, "okey");
    for (int x = 0; x < listFullPathImg.Count; x++)
    {
       File.Delete(listFullPathImg[x]);
    }
    listStreamContent.Clear();
}

相关问题