【发布时间】:2016-10-11 22:37:45
【问题描述】:
我正在使用此代码从具有特定 url 的服务器下载图像:
double tmpProcessed = await Task.Run<double>(async () => {
if (vues.Count > 0) {
foreach (Vue v in vues) {
processed++;
updateProgress((processed * 100 / total));
string filename = v.gallery__file.Replace("./", "");
// Download File
try {
string path = Path.Combine(vueDirectory.AbsolutePath, filename);
//Save the Image using writeAsync
FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
using (HttpClient client = new HttpClient())
{
byte[] buffer = await client.GetByteArrayAsync("http://XXXX/site_media/" + filename);
await fs.WriteAsync(buffer, 0, buffer.Length);
}
//Close file connection
fs.Close();
}
catch (Exception ex) {
Log.Error("XXXX", ex.ToString());
}
finally {
App.db.SaveVues(v);
}
}
}
return processed;
});
我在许多 Android 设备上测试了我的应用程序,它运行良好。但现在我在旧平板电脑(运行 android 4.0.3 的松下)上测试它。所以它使用 HttpClient 下载了一些图像,但过了一会儿我得到了一个 SIGSEGV 11。我 100% 确定它来自下载部分,因为当我绕过这部分时,一切都很好。
在日志中我可以看到如下信息:
- suspend_thread 挂起耗时 200 毫秒,超过了允许的值 200 毫秒
- 无法使用
libunwind.so展开:无法加载库 - 无法加载库:load_library[1091]:找不到库“/data/data/RescueCode.Droid.RescueCode.Droid/lib/libcorkscrew.so”
- 时间设备名称类型 PID 标签消息 10-11 22:06:23.039 PANASONIC FZ-A1B 错误 7898 libc 致命信号 11 (SIGSEGV) 在 0xdeadbaad (code=1)
有人遇到过这种错误吗?试图在网上查找信息,但似乎是一个罕见的错误。
谢谢大家!
【问题讨论】:
-
删除了文件保存部分,仍然错误,删除了下载部分+保存部分:没有错误。我像这样尝试了 4 - 5 次,但再次出现错误。貌似来自Task部分?
标签: c# android xamarin dotnet-httpclient