我知道当我们调用异步方法时,它会释放UI线程,并在遇到await关键字时挂起线程的执行。现在假设我们从等待的方法返回一些值,如下所示:
public async Task SomeEvent()
{
x= await Sum(2, 5); //Returns some output value
TextBox.Text = x; // updates the result in the UI
}现在,根据我的理解,由于UI线程在遇到await关键字时返回到调用此"SomeEvent“的方法,因此必须在主线程上执行所有与UI相关的操作。现在在上面的程序中,UI忙于执行一些其他操作,因为它从执行上面的方法中解放出来,当等待的进程异步执行完成时,UI将如何更新。
发布于 2017-08-14 17:49:19
有一种叫做SynchronizationContext的东西。简单地说,完成一些异步工作的线程将等待(将被放入队列中),等待UI上下文再次空闲并在其中运行。这看起来像是立即发生的,但实际上并非如此。
https://stackoverflow.com/questions/45670441
复制相似问题