c# - 我应该在 Windows Phone 8 中将异步调用转换为同步吗?

标签 c# .net windows-phone-7 windows-phone-8 async-await

我是一位经验丰富的程序员,曾经在 Android 中编程,最近开始为 Windows Phone 编程。 当我发现 C# 5.0 中引入的 async/await 范式时。

我很喜欢,但是在编写我的第一个应用程序时注意到,在示例中,用于登录请求的简单网络连接使得异步在整个代码中传播,从网络层到演示文稿。这让我感到震惊,因为它迫使我重写所有接口(interface),使它们返回任务而不是原始结果类型。

例子

public LoginRespose login(string username, string password)

转换成

public Task<LoginResponse> login(string username,string password);

我见过很多允许将异步调用转换为同步调用的辅助类。我是否应该使用其中之一来“切断”网络层中的异步链并注意从 UI 异步调用它以避免阻塞主线程?

最佳答案

Should I use one of them to "cut" the async chain in the network layer and take care of calling it asynchronously from the UI in order to avoid blocking the main thread?

不要。 async是沿着调用链向上传播的。这就是模式显示 "async all the way" 的原因.

我明白为什么您一开始会“震惊”。理解您的整个调用层次结构需要异步有点让人不知所措,即添加额外的 TaskTask<T>方法以便使用异步。但是让它在你身上成长,这绝对是要走的路。 Don't block on async code,而是拥抱它。

例如,使用 IAsyncCommand 而不是 ICommand它处理异步操作。

关于c# - 我应该在 Windows Phone 8 中将异步调用转换为同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316873/

相关文章:

c# - 替换关联实体

c# - Windows Phone 中的后台线程

c# - 在 Windows Phone 中使用 DataContractJsonSerializer 将 JSON 反序列化为字典

silverlight - 您如何调试 Share Picker 扩展?

c# - 自定义 WCF channel 在 ChannelBase.EndInvoke 上引发 NullReferenceException

c# - 检查文本文件是否在记事本中打开

c# - C++ (crypto++) 和 C# 加密匹配

c# - 用于加速站点的线程池

c# - .Net Core 2 中 GC 如何与 DI 一起工作

c# - Java/.NET 中的 RSA 加密和 .NET 中的解密