虽然我已经理解了用c#进行异步编程,但仍然不明白为什么异步使用void并不是更好的解决方案,那么当我想改进我的Xamarin Forms代码时,我发现很多MVVM框架使用AsyncCommand来避免使用异步"与事件不同" "如下:
public class AsyncCommand : Command
{
public AsyncCommand(Func<Task> execute) : base(() => execute())
{ }
public AsyncCommand(Func<object, Task> execute) : base((arg) => execute(arg))
{ }
}
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么异步如果命令本身不是异步的,那么使用带动作的异步命令并运行这样的任务:
public class AsyncCommand : Command
{
public AsyncCommand(Action execute) : this(() => Task.Run(execute))
{ }
public AsyncCommand(Action<object> execute) : this((arg) => Task.Run(() => execute(arg)))
{ }
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有一个入侵者的问题.我已经用monoandroid 8.1和.net标准2.0创建了一个xamarin表单解决方案,一切都很顺利,但是一旦我添加了UI测试项目并添加了android项目作为参考,我看到了4个错误,当我构建它时,构建成功但是错误是仍然可见.
当我在应用程序中心构建它时它失败并向我显示这4个错误: 错误列表
从应用程序中心登录
2018-06-11T10:26:21.6746020Z NU1201:Project UserLogin.Android与net471不兼容(.NETFramework,Version = v4.7.1).Project UserLogin.Android支持:monoandroid81(MonoAndroid,Version = v8.1)