// --------------------------------------------------------------------- private async Task SetNumberOfThreads_NonBlocking() { label1.Text = "button clicked ... wait 3 sec"; await SyncOverAsyncDeadlock_Resolved_v1(); label1.Text = AsyncAndThreading.ThreadCount().ToString(); }
void SyncOverAsyncDeadlock_Resolved_TimeOut() { int timeout = 2; label1.Text = $"unresponsive for {timeout} seconds"; var t = AsyncAndThreading.Simulate(); t.Wait(TimeSpan.FromSeconds(timeout)); label1.Text = $"responsive again"; }
static IEnumerable <Task <string> > SourceTasks_pg_163_2() { Task <string> task1 = AsyncAndThreading.ReadFileAsync(false); Task <string> task2 = AsyncAndThreading.ReadFileAsync(false, @"C:\Users\Henrique-private\Desktop\demo2.txt"); Task <string> task3 = AsyncAndThreading.ReadFileAsync(false, @"C:\Users\Henrique-private\Desktop\demo3.txt"); List <Task <string> > tasksList = new List <Task <string> >(); tasksList.Add(task1); tasksList.Add(task2); tasksList.Add(task3); var tasksArray = tasksList.ToArray(); return(tasksArray); }
private void button1_Click(object sender, EventArgs e) { var execCtx = AsyncAndThreading.GetExecutionContext(); int threadId = AsyncAndThreading.GetThreadId(); // reason 2: deadlock //SyncOverAsyncDeadlock(); //SyncOverAsyncDeadlock_Resolved_TimeOut(); //await SetNumberOfThreads_NonBlocking(); // reason 3: resources Task <double> res = AsyncAndThreading.ComputeValueAsync(); label1.Text = res.Result.ToString(); }
private static async Task <string> _157_AvoidRunningCtxAwareOnContextFree() { var res = await AsyncAndThreading.ReadFileAsync(true); return(res); }
async Task SyncOverAsyncDeadlock_Resolved_v1() { await AsyncAndThreading.Simulate(3); }
// --------------------------------------------------------------------- void SyncOverAsyncDeadlock() { var t = AsyncAndThreading.Simulate(); t.Wait(); }