次のようないくつかのメソッドを持つクラスがあります。
private Task Sleep()
{
return Task.Delay(SleepDuration);
}
public async Task<User> Login(string username, string password)
{
await Sleep();
return new User { Id = 1, Username = username };
}
SleepDuration
テスト中は0に設定されていることに注意してください。
iOS NUnit プロジェクト テストで次のように呼び出した場合:
myClass.Login("username", "password").Wait();
テスト ランナーの UI が一時停止し、完了しません。ブレークポイントを追加すると、コードはawait
. 同じテストは、.Net 4.5 Mono プロジェクトの標準 NUnit ランナーで正常に実行されます。私のアプリケーションでも問題なく動作しますが、呼び出すことはなくWait
、常に async/await を使用します。
何か案は?Task.Delay
デッドロックを防ぐ代わりに使用できるものは他にありますか? 私はすでに試しTask.Factory.StartNew(() => { })
ました。