正常运行我的应用程序时,没有async Task
关键字调用的任何await
方法都完全符合我的要求。在另一个线程中启动该方法,但继续执行(编译器甚至高兴地警告我这一点)。这可以按预期工作,没有问题。
当在单元测试中运行相同的代码时,这个未加密的方法现在永远阻塞,我的单元测试永远不会失败。
我猜测async
方法并非设计为可以这样使用,尽管它们似乎通常运行良好。有没有办法让它们在单元测试中正常工作,或者你建议我使用什么代替在后台执行代码而不阻塞(BackgroundWorker?)。我喜欢Task方法,因为它允许我以阻塞和非阻塞的方式重用该方法。我可以使用Task.Run()并传入一个调用该方法的lambda,但这看起来有点难看/不可读。