【发布时间】:2016-01-04 01:46:04
【问题描述】:
我昨天开始使用适用于 Android 的 Xamarin,是的,它非常好。 但当然肯定有一些错误,我和每个人一样。
我尝试使用以下代码行异步下载 www.google.com 的 HTML:
private async void btnAuthenticate_Click(object sender, System.EventArgs e)
{
Toast.MakeText(this, "method is being called", ToastLength.Long).Show();
string test = await Task.Run(() => new WebClient().DownloadString("http://google.de/"));
Toast.MakeText(this, test, ToastLength.Long).Show();
}
单击按钮时,会出现 Toast“正在调用方法”,但几乎没有其他内容。起初,至少需要 1 1/2 分钟才能显示出一些反应,要么应用程序崩溃,要么什么都不做,要么打印出我想要的东西。假设在 10 次尝试中打印出预期值的 2 倍。
我用 WPF C# 桌面应用程序尝试了相同的代码,它运行良好。
应用程序甚至没有冻结或什么的。 调试器的输出基本相同:
“工人开始” 或者有时它会说“爬山,更改最大线程数 x” 要么 “线程开始:#X” 我不知道这是否相关。
另外,我正在使用 Visual Studio 2015 和 Xamarin for Android(目前为 30 天试用版)。
编辑:我修改了应用程序以在应用程序以相同行为启动时立即开始下载网页。然后我从中创建了一个 logcat 日志,您可以看到 here。
Edit²:这次我还使用 Xamarin Studio 创建了一个新项目。我修改了以下内容:
- 为清单添加了 Internet 权限。
- 根据我的需要更改了默认按钮代码。
这是这个应用程序的来源,有人可以自己尝试一下,并告诉我是否也需要超过 30 秒的时间才能完成这个 webrequest,而实际上应该在 1-2 秒内完成。 Here is the demo project.
我希望你们能帮助我。 提前致谢。
【问题讨论】:
标签: c# android asynchronous xamarin mono