在Visual Studio的即时窗口中调用异步方法

19

我卡在一个关键点,需要观察调用异步函数后的结果,所以我尝试在Immediate Window中执行以下代码:

var things = await Client.GetThingsAsync("aParameter");

'await' 操作符只能在异步方法中使用。请考虑将此方法标记为 'async' 并将其返回类型更改为 'Task'。

但是断点已经在一个异步方法中了。而且我已经尝试运行过了。

var things = Client.GetThingsAsync("aParameter");

"评估需要一个临时线程来运行。使用观察窗口执行评估。"

因此,我尝试使用观察窗口和

ClientGetThingsAsync("aParameter").Result;

"函数评估要求所有线程运行。"

每次编辑代码和重新构建都需要15分钟的构建时间,这让我感到很烦恼。有哪些策略可以在调试时调用异步调用呢?

2个回答

16

你需要手动完成任务-无法使用await

var things = ClientGetThingsAsync("aParameter").Result;

正如编译器所指出的那样,您需要一个async函数来使用await,但是在使用立即窗口时,您无法控制该函数。


5
评估需要临时运行线程。使用“监视”窗口执行评估。 - user33276346
观察窗口(在调试时可以打开最多四个:在“调试|窗口”菜单中查看)允许您观察任意表达式。 - Richard
4
我使用ClientGetThingsAsync("aParameter").Result;,但收到了"The function evaluation requires all threads to run."的错误提示。 - user33276346
@user33276346 我发现,有时使用F5运行直到下一个断点会有所帮助。否则,在主应用程序代码中进行调试(而不是在调试器中),即使是丢弃的代码也可以这样做。 - Richard
我在一个ASP.NET Core 3.1项目中使用VS 2019(16.11.5)完成了这个操作,结果导致VS完全冻结并锁定了5分钟,真是惊人。 - Dai

13
在观察窗口中,单击消息右侧的小图标。 输入图片描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接