Если вы запускаете сопрограмму в OnApplicationQuit .. приложение завершит работу, прежде чем сопрограмма сможет завершить sh, и все объекты будут уничтожены.
В соответствии с этим потоком простой Get SendWebRequest будет не имеет зависимости от основного потока, поэтому безопасно завершить основной поток до завершения.
https://forum.unity.com/threads/http-requests-without-coroutines.495418/
Вы можете попробовать заблокировать основной поток от возврата и ожидания вашего сетевого запроса, но я думаю, что у вас есть всего несколько секунд, прежде чем в этом случае будет жестко завершено единство.
Попробуйте это:
void LogOut()
{
string url = String.Format("http://localhost:7989/RegisterApi/logout?myTempID={0}", myTempID);
LogOutUser(url, () => { Debug.Log("logOut req done"); });
}
private async void OnApplicationQuit()
{
LogOut();
await websocket.Close();
}
void LogOutUser(string url, Action onSuccess)
{
UnityWebRequest req = UnityWebRequest.Get(url);
req.SendWebRequest();
while (!req.isDone) {
System.Threading.Thread.Sleep(100);
}
string result = req.downloadHandler.text;
onSuccess();
}