如何在 C# 异步等待模型中强制等待

Buc*_*nan 0 .net c# async-await maui

我想我对异步等待模型的理解一定遗漏了一些东西。本来应该很简单的事情似乎很难实现。

我有一个用户界面,需要检查用户是否已登录。为此,我需要在我的一个类中调用一个方法来执行一些查询。

此类依次调用仅具有异步方法的第 3 方代码。

我如何调用该异步方法并使应用程序等待,直到我得到结果?

我已经尝试了所有建议的东西,例如ConfigureAwait,,,等等。似乎没有什么可以可靠地工作。RunSynchronous.Result

看起来很愚蠢,这样的事情是如此困难,所以我认为我错过了一条关键信息。

谢谢。

H.A*_*.H. 5

让我们明确一点:

“让我等到结果后再申请?”

与阻塞、等待或任何结果无关(我无法强调这一点)。

如果您习惯于在某件事完成之前锁定 UI,那么您应该改变您的设计,而不是试图找到一种方法来完成它。(我花了相当多的时间为 Windows Mobile 编写 MFC 应用程序,我也曾经这样做过)

处理这种情况的正确方法是让用户知道正在完成工作(例如某种活动指示器),同时确保不会因用户输入而执行其他代码(例如命令的 CanExecute 属性)。当合适的时候,你可以放置取消逻辑。

更重要的是,在 MAUI(以及一般的移动开发)背景下,阻塞 UI 线程,即使是几秒钟,也是完全不可接受的。它应该始终保持响应。这不是一个选择的问题。

  • ^ 就是这样。由于您使用的是数据绑定平台,因此可以使用类似于[此]的“通知任务”(https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async -异步-mvvm-应用程序-数据绑定的编程模式)。 (3认同)