2015-03-23 14 views
0

Я использую класс WWW для отправки HTTP-запросов и после создания запроса я жду его завершения с помощью сопрограммы. В сопрограмме вызывается «yield return www» и записывается результат. Я заметил, что когда подключение к Интернету не работает, сопрограмма никогда не возвращается. Есть ли какой-то механизм тайм-аута в WWW?Умножение бесконечно для объекта WWW при сбое подключения к Интернету

Благодаря

+0

таймаута, кажется, 60-е годы, вы пытались что-то вроде этого: http://answers.unity3d.com/questions/566671/any-way-around-www-timeout-on-android.html? – d4Rk

ответ

0

Там нет тайм-аута в WWW, но вы можете реализовать его по своему усмотрению.

Поскольку объект www уступает, вы можете проверить, сколько времени прошло, и решить, является ли это таймаутом.

Вы можете поместить выходной доход www в функцию AsyncSend(), например.

public IEnumerator AsyncSend() 
{ 
    ... 
    yield return www; 
    ... 
} 

Теперь вы получаете Coroutine, вызывая указанную выше функцию.

IEnumerator coroutine = AsyncSend(); 
StartCoroutine(coroutine); //http://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html 

В Update() вы можете проверить, не является ли это таймаутом.

void Update() 
{ 
    ... 
    //timeout 
    if (...) 
    { 
     StopCoroutine(coroutine); //http://docs.unity3d.com/ScriptReference/MonoBehaviour.StopCoroutine.html 
     www.Dispose(); //http://docs.unity3d.com/ScriptReference/WWW.Dispose.html 
    } 
    ... 
}