我有一個等待本地設定值不再為空的 while 回圈。如果某些東西被破壞并且值仍然為空,是否有某種最佳實踐來說明您應該如何跳出回圈?現在我只是讓它計數到 100,如果它回圈 100 次以打破回圈:
int i = 0;
while (ApplicationData.Current.LocalSettings.Values["MediaInfoSaved"] == null)
{
await Task.Delay(15);
i ;
if(i >= 100)
{
break;
}
}
該回圈正在等待完全信任助手中的行程完成并回傳它的結果。該程序有時可能需要一段時間(0.1-1 秒)才能完成。
uj5u.com熱心網友回復:
將值(在您的代碼中表示為 100)放在組態檔中,以便在需要時輕松更改。如果稍后出現問題,您可以根據需要進行調整。
uj5u.com熱心網友回復:
如果該程序預計最多需要一秒鐘,那么請等待一秒鐘。無需回圈和遞增計數器:
private async Task<object> GetLocalSettingAsync()
{
const string SettingName = "MediaInfoSaved";
// Try to get the value immediately:
var setting = ApplicationData.Current.LocalSettings.Values[SettingName];
if (setting != null)
return setting;
// Wait for one second only.
await Task.Delay(TimeSpan.FromSeconds(1));
// Return either a value or null.
return ApplicationData.Current.LocalSettings.Values[SettingName];
}
uj5u.com熱心網友回復:
實作超時是一種非常常見的做法,即在中斷回圈之前等待指定的時間量(如果您知道該程序應該花費多長時間)。這基本上就是你已經實作的。如果您認為完成時間不應超過 1 秒,請確保它在 1.5-2 秒后中斷回圈。可能有更有效的方法來實作這一點,例如使用系統中的實際時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/416021.html
標籤:
上一篇:如何更改Gradle版本?
