C# 应用程序关闭后调用函数

C# 应用程序关闭后调用函数,c#,multithreading,unity3d,exit,coroutine,C#,Multithreading,Unity3d,Exit,Coroutine,我需要在关闭应用程序(windows独立应用程序)后调用函数,而不是在ApplicationClose()函数上 此函数还依赖于类中的变量(IntPtr变量) 我尝试将此函数设置为IEnumerator,并从OnApplicationClose()调用它,但我不知道这是否可行,或者这是否是正确的方法: void OnApplicationQuit() { StartCoroutine(OnClose()); } private IEnumerator OnClose() { y

我需要在关闭应用程序(windows独立应用程序)后调用函数,而不是在ApplicationClose()函数上

此函数还依赖于类中的变量(IntPtr变量)

我尝试将此函数设置为IEnumerator,并从OnApplicationClose()调用它,但我不知道这是否可行,或者这是否是正确的方法:

void OnApplicationQuit()
{
    StartCoroutine(OnClose());
}

private IEnumerator OnClose()
{
    yield return new WaitForSeconds(5);
    // After close function
}

我的问题是,我想在应用程序退出后调用的函数需要很长时间,因此我需要先关闭应用程序,然后调用此函数。

通过协同程序是不可能的。协同程序在主线程上运行,这会被应用程序终止


但是,如果您是为android开发的,您可以编写一个服务。然后,在应用程序退出中,您可以通过JNI发送一条消息,以执行您想要执行的任何任务。

很抱歉,在问题中没有提到这一点,但它是windows单机版application@BilalSehwail,或者使用一个新线程而不是一个协程,但是要注意,您“不能在线程中使用任何Unity函数”。或者:最小化应用程序,完成后退出。如果应用程序在完成之前放在前面,您可以显示一个进度条。@KYL3R现在,我同意您的建议(线程+最小化),您希望执行的代码是否独立于应用程序(如果它需要一些输入也可以)?如果是,并且您可以自由添加其他应用程序和批处理文件,则可以在关闭应用程序时调用该批处理文件,该批处理文件将调用其他应用程序(这可能需要时间,但主应用程序可以在调用批处理后很快关闭)