3
假设我有API事件,我必须返回结果。 我必须做的计算使用异步方法,它创建一个控件(必须在UI线程上运行)。将异步结果返回到事件
private async void API_QueryControl(object sender, APIEventArgs e)
{
e.Result = await CreateControl();
}
private async Task<Control> CreateControl()
{
await Task.Delay(1000);
return new Panel();
}
现在,这显然不会起作用,因为API_QueryControl在设置结果之前产生。我无法控制API,这意味着该事件无法更改。我将如何获得该事件以等待结果?
你不知道。您可以阻止UI线程,更改或不使用该方法,找到计算值的更快捷方式等。 – Servy
如何通过阻止UI线程使其工作? CreateControl()。Result,CreateControl()。Wait()等会导致死锁。 – user2533483
在这种情况下阻止UI线程的一种方法是不使用异步... ;-) –