💬

〇〇ができる状態になるまで待機する(タイムアウトあり)

2022/12/10に公開

Taskでの非同期処理とかいろいろ調べましたが、結構めんどくさいしこれでよくね?ってなりました。その関数を紹介します。

    bool WaitTillBeAbleToHogeHoge(int count = 0, int timeout = 10000, int sleepMiliSec = 10)
    {
        if (count > timeout / sleepMiliSec) { return false; }
        Thread.Sleep(sleepMiliSec);
        try
        {
            // ここで判断したいことをする
            var hogehoge = HogeHoge.hogehoge();
            return true;
        }
        // 想定されるエラーを指定
        catch (NullReferenceException)
        {
            return WaitTillBeAbleToGetCurrentPosition(count+1);
        }
    }

Discussion