在我努力创建使用Xamarin Forms中的HttpClient(SendAsync)上传视频的进度指示器时,现在我需要寻求帮助。自定义HttpContent不会构建 - 不可能AOT程序集(mtouch)
上传本身工作正常,所有其他API调用,但是当我尝试创建自定义HttpContent
来跟踪上传的进度时,项目甚至不会再构建。
错误MT3001:无法AOT大会 '[...]的iOS/OBJ/iPhone /调试/集结iphone7.2-10.1.1/mTouch触摸缓存/编译/ theproject.dll' (MT3001)(theproject.iOS)
使用StreamContent或ByteArrayContent而不是生成项目,但我不能让它工作,跟踪进度。
的代码片段(这是最小的例子):
public class ProgressableContent : HttpContent
{
private const int defaultBufferSize = 4096;
private Stream content;
private int progress;
public ProgressableContent(Stream content)
{
this.content = content;
}
protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
return Task.Run(async() =>
{
var buffer = new byte[defaultBufferSize];
var size = content.Length;
var uploaded = 0;
using (content) while (true)
{
var length = content.Read(buffer, 0, buffer.Length);
if (length <= 0) break;
uploaded += length;
progress = (int)((float)uploaded/size * 100);
await stream.WriteAsync(buffer, 0, length);
}
});
}
protected override bool TryComputeLength(out long length)
{
length = content.Length;
return true;
}
}
我用这种通过将我的字节的一个流,希望正确:
//... building httpMessage.
httpMessage.Content = new ProgressableContent(await byteArrayContent.ReadAsStreamAsync());
//...
var response = await _httpClient.SendAsync(httpMessage, Cancellation.Token);
//...
的问题(S): 我不知何故导致错误?有一个更好的方法吗?
此标签与Xamarin.iOS也monotouch抱怨。
您使用的是哪个版本的'Xamarin.iOS'?禁用增量构建帮助吗?结帐和链接的问题:https://bugzilla.xamarin.com/show_bug.cgi?id=43689 – SushiHangover
@SushiHangover Xamarin.iOS ver。 10.2.0.4(Xamarin Indie),增量构建未启用。 – Mackan