在应用程序的Async
事件期间调用OnStart()
方法在服务器连接和数据交换期间执行一些繁重的操作被认为是一种好习惯,因为此方法不会触及UI线程吗?是否在此事件触发时正确初始化了应用程序的所有组件,以便Async
方法能够执行?
protected override async void OnStart()
{
sendHttpRequestAsync();
}
private async void sendHttpRequestAsync() {
await ...
}
答案 0 :(得分:3)
避免在除事件处理程序之外的任何事情上使用async void
。
参考Async/Await - Best Practices in Asynchronous Programming
然而, OnStart
不是事件处理程序。只是根据文档的常规方法......
应用程序开发人员覆盖此方法以在应用程序启动时执行操作。
作为一种解决方法,您可以创建自己的自定义事件和处理程序,以允许在事件处理程序上执行async void
。您将在应用程序调用{{1}}时订阅该事件,然后将异步事件提升为异步处理。需要重构OnStart
才能返回sendHttpRequestAsync()
,以便可以安全地等待它。
Task