В настоящее время я использую WCF в monotouch для вызова существующей службы и пользовательского UIAlertView.
Проблема заключается в том, что если я создаю UIAlertView в качестве экземпляра класса и я делаю следующее:
public override void ViewDidAppear()
{
_alertView.Message = "Loading...";
_alertView.Show();
_client.GetDataAsync("test");
_client.GetDataCompleted += GetDataCompletedDelegate;
base.ViewDidAppear();
}
void GetDataCompletedDelegate(object sender, GetDataEventArgs)
{
// do someting with data
_alertView.Hide();
}
это работает, но этот совет записан в консоли: UIAlertView: wait_fences: не удалось получить ответ: 10004003
иначе, если я попытаюсь запустить этот код:
public override void ViewDidAppear()
{
using(CustomAV _alertView = new CustomAV())
{
_alertView.Message = "Loading...";
_alertView.Show();
_client.GetDataAsync("test");
_client.GetDataCompleted += delegate{
InvokeOnMainThread(delegate{
// do someting with data
_alertView.Hide();
});
};
}
base.ViewDidAppear();
}
при первом запуске кода, но теперь отображается предупреждение.Второй раз симулятор не запускается. Не удалось зарегистрировать com.yourcompany.wcftest на сервере начальной загрузки.Ошибка: неизвестный код ошибки.Как правило, это означает, что другой экземпляр этого процесса уже запущен или завис в отладчике. StackTrace. В этом случае мне нужно перезагрузить компьютер.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Спасибо, Джефф, я проверил свой код и в GetDataCompletedDelegate я вставил функцию, которая запускается в потоке пользовательского интерфейса.
InvokeOnMainThread(delegate{
doSomething();
});
private void doSomething()
{
// do stuff here
_alertView.Hide();
}
Ошибка fency продолжает появляться.Если я использую ваше решение внутри метода doSomething (), оно работает
_alertView.InvokeOnMainThread(delegate{
_alertView.Hide();
});
Почему?Может быть, я не понял, но в первом фрагменте кода сделать что-то () работает в потоке пользовательского интерфейса!Не правда ли?