Untitled
unknown
plain_text
3 years ago
1.2 kB
14
Indexable
// Current Method
protected object WaitForData(string key, WaitForDataProfile profile)
{
if (string.IsNullOrWhiteSpace(key))
return null;
if (profile == null)
{
profile = WaitForDataProfile.NORMAL;
}
object data = null;
int count = 0;
while (data == null && count < profile.Count)
{
Thread.Sleep(profile.MillisecondsDelay);
data = GetCache(key, (TimeSpan?)null);
count++;
}
return data;
}
// New Method
protected async Task<object> WaitForDataAsync(string key, WaitForDataProfile profile)
{
if (string.IsNullOrWhiteSpace(key))
return null;
if (profile == null)
{
profile = WaitForDataProfile.NORMAL;
}
object data = null;
using (var tcs = new TaskCompletionSource<object>())
{
int count = 0;
while (data == null && count < 80)
{
await Task.Delay(profile.MillisecondsDelay);
data = GetCache(key, (TimeSpan?)null);
count++;
if (data != null)
tcs.SetResult(data);
}
return await tcs.Task;
}
}Editor is loading...