我在網上能找到的關于async中的await的內容都是在教我如何 "等待一段時間",這不是我想要的。
我想讓它等待,直到滿足某個條件。
我想讓它等待,直到滿足某個條件。
就這樣吧
yield return new WaitUntil(()=> conditionIsMet)。)
在Coroutine中。
我想做的事情是
await Task.WaitUntil(()=> conditionIsMet);
這樣的事情可能嗎?
有人能不能好心幫我一下?
非常感謝您的幫助。
非常感謝您的幫助。
。uj5u.com熱心網友回復:
這基本上不就是類似于
的東西嗎?public static class TaskUtils<
{
public static Task WaitUntil(Func< bool> predicate)。
{
while (!predicate()) { }
}
}
盡管為了愛護你的CPU,我實際上寧愿給你的任務一定的睡眠間隔,比如
public static class TaskUtils<
{
public static async Task WaitUntil(Func<。 bool> predicate, int sleep = 50)
{
while (!predicate())
{
await Task.Delay(sleep)。
}
}
而現在,你可以使用諸如
這樣的東西public class Example : MonoBehaviour >。
{
public bool condition。
private void Start()
{
Task.Run(async ()=> await YourTask())。
}
public async Task YourTask()。
{
await TaskUtils.WaitUntil(IsConditionTrue)。
//or as lambda
//await TaskUtils.WaitUntil(() => condition);
Debug.Log("Hello!")。
}
private bool IsConditionTrue()
{
return condition。
}
}
uj5u.com熱心網友回復:
你可以創建你自己的ConsitionCheker方法,并在你的MainFunction中使用它,得到一個等待條件結果的boolian
。 public async Task< bool> CheckCondition()。
{
While(true){
//span>檢查條件。
if(mycondition is true)
break。
}
return true;
}
public void Do(bool consitionResult)。
{
if(consitionResult){
//代碼。
}
}
使用情況:
public async void Test()
{
//span>等待條件滿足。
//傳遞條件結果。
Do(await CheckCondition())。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/333672.html
標籤:
上一篇:打開iOS11Files應用程式并顯示我的應用程式的Documents檔案夾
下一篇:對一個物件進行通用決議

