Как выполняется метод, использующий async и await? - C#
Формулировка задачи:
НаMSDN есть такой пример:
Когда мы попадаем в DoIndependentWork();, то метод client.GetStringAsync("http://msdn.microsoft.com") время от времени тоже получает квант времени на свою работу?
Или задача целиком выполняется в это месте: string urlContents = await getStringTask; ?
async Task<int> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
DoIndependentWork();
string urlContents = await getStringTask;
return urlContents.Length;
}Решение задачи: «Как выполняется метод, использующий async и await?»
textual
Листинг программы
ConcurrentQueue<SomeClass> ProcessingQueue = new ConcurrentQueue<SomeClass>();
CancellationTokenSource tokenSource;
CancellationToken cancelToken;
//.....
tokenSource = new CancellationTokenSource();
cancelToken = tokenSource.Token;
Task.Factory.StartNew(new Action(DequeueToStorage));
Task.Factory.StartNew(new Action(DequeueToStorage));
//...........
void DequeueToStorage()
{
SomeClass curr;
while (!cancelToken.IsCancellationRequested)
{
if (ProcessingQueue.TryDequeue(out curr))
{
//............
}
}
}