我正在尝试正确关闭我的应用程序。我的应用程序使用数据绑定,多次访问数据库,并且可能还运行了一些先天威胁。
由于Application.Current.Shutdown()在这种情况下不会关闭所有内容,因此我查看了Application.Current.Dispatcher.BeginInvokeShutdown().
BeginInvokeShutdown()需要一个System.Windows.Threading.DispatcherPriority论据。这可以是:
Invalid- 枚举值为-1。这是无效的优先级。Inactive- 枚举值为 0。不处理操作。SystemIdle- 枚举值为1。系统空闲时处理操作。ApplicationIdle- 枚举值为2。在应用程序空闲时处理操作。ContextIdle- 枚举值为3。在后台操作完成后处理操作。Background- 枚举值为4。在所有其他非空闲操作完成后处理操作。Input- 枚举值为 5。操作的处理优先级与输入相同。Loaded- 枚举值为 6。在布局和渲染完成时处理操作,但就在输入优先级的项目被服务之前。具体来说,这在引发 Loaded 事件时使用。Render- 枚举值为 7。操作处理的优先级与渲染相同。DataBind- 枚举值为8。操作的处理优先级与数据绑定相同。Normal- 枚举值为 9。操作以正常优先级处理。这是典型的应用程序优先级。Send- 枚举值为10。操作在其他异步操作之前处理。这是最高优先级。
现在,假设我的应用程序只有在出现问题时才会关闭。这意味着应用程序无需完成任何操作,只需原始关闭,以便用户重新启动应用程序。我说我必须Inactive作为论据是正确的吗?如果我Send作为论据,一切都在完全关闭之前完成,这是真的吗?