在我努力創建使用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